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.

Komentáře (0) Počítače 16. 6. 2008, 16:20


Přidat komentář

Text je formátován pomocí Texy!.

E-mail nebude zveřejněn, je používán pouze ke zobrazení gravatarů.