To będzie bardzo krótki wpis, do których raczej nie przyzwyczaiłem ;)
Na początek zagadka, co spowoduje podany kod:
echo 100; define('100', 'stala 100'); echo 100;
Wywali błąd? Nadpisze wartość liczby?
Otóż nie. Jeśli nastąpiłoby nadpisanie wartości integera były to spory idiotyzm ze strony języka. Jednak co ciekawe nie wywali też błędu i stała o nazwie ‚100’ powstanie, czego dowodem jest:
print_r(get_defined_constants()); /* zwróci: (...) [100] => stala 100 */
Jednak nijak nie dostaniemy się do podanej stałej poprzez samą jej nazwę, jedynym sposobem jest użycie funkcji:
echo constant('100');
Dla porównania Javascript nie pozwala na takie rzeczy:
const 100 = 'stala 100'; // SyntaxError: missing variable name
Na koniec dodam tylko, że pomysł na wpis zrodził się, jak już niejednokrotnie było, przez forum.php.pl. Niestety w ten sposób zmiany VAT-u w swojej aplikacji nie dokonamy :D