Late static binding
Co si myslíte, že se vypíše se díky následujícímu textu vypíše na obrazovku?
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
self::who();
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test();
Posledních pár dní jsem psal v PHP, aniž bych spustil jakýkoliv script. Psal jsem a věděl, že nadejde chvíle, kdy to kód začnu testovat a najdu chyby. Doufal jsem ale, že se bude jednat o chyby pouze drobné (třeba syntaktické), a děsil se toho, že naleznu chybu v navrženém systému. Bohužel se taková chyba objevila.
Demostruje ji kód napsaný výše. Ačkoliv se PHP tváří jako objektové, jakmile se do objektů položíte a budete od PHP očekávat běžné objektové chování a nástroje, narazíte. Výše zmíněnou chybu nelze v současné verzi PHP opravit.
Text je formátován pomocí Texy!.
E-mail nebude zveřejněn, je používán pouze ke zobrazení gravatarů.