Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Traits - statyczne odwołania do metod cechy jak do statycznej metody zwykłej klasy
Forum PHP.pl > Forum > PHP
adbacz
Czy ktoś z was eksperymentował z PHP 5.4 i jego cechami (trait)? Ja tak teraz sobie patrzę i troszkę mi to nie tak jest jak powinno być.

Po pierwsze, wiecie, że można odwołać się do każdej metody cechy jak do metody statycznej? Oczywiście bez kontektu $this, ale to jednak odwołanie.
  1. trait MyTrait
  2. {
  3. public function show()
  4. {
  5. var_dump(__METHOD__);
  6. }
  7. }
  8.  
  9. MyTrait::show();


Poza tym, tak samo można odwołać się do KAŻDEJ!!! metody publicznej w klasie, jak do metody statycznej. No to wg mnie paranoja. W PHP 5.3 tego nie było i wg mnie tak powinno zostać.

  1. class MyClass
  2. {
  3. public function show()
  4. {
  5. var_dump(__METHOD__);
  6. }
  7. }
  8.  
  9. MyClass::show();


Po trzecie, dlaczego kompilator szuka cechy (od razu), gdy napotka w ciele klasy słowo kluczowe use? Jeśli nie znajdzie, to wyrzuca zawsze błąd, że nie może znaleść cechy - mimo, że ja na przykład tak nazwałbym swoją klasę. Do tej pory, zawsze gdy używałem use w ciele klasy, a klasy której nazwa stała za use nie było, to PHP nic nie robił - nie było żadnego błędu. Teraz zawsze wyrzuca ten sam błąd.

Sprawdzałem to na najnowszej wersji PHP 5.4.11 ściągniętej dopiero co z serwerów PHP.
CuteOne
1 i 2. Włącz wyświetlanie wszystkich błędów (da się wywołać w ten sposób metody ale wywali Stricta)
3. Hmmm aby to trochę rozjaśnić.. czy nazwiesz swoją klasę tak?
  1. class extends implements moj_interface {}

Zwyczajnie wchodzi nowy element i jej nazwa z automatu zostaje zarezerwowana


ps. szczerze powiedziawszy to nie wiem czego się czepiasz..
adbacz
Zapomniałem o raportowaniu błędów;/ Wszędzie gdzie pracuję mam powłączane a tu zapomniałem i walnąłem gafę.

Moderacja może usunąć temat, żeby nie śmiecić forum.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.