konto usunięte
Temat: Jeszcze jeden powód, z którego PHP sucks
Niekiedy się zdarza, że jakaś metoda musi wiedzieć, jak nazywa się jej klasa. Napr., ORM może z nazwy klasy wygenerować nazwę tablicy lub coś jeszcze takiego. I wszystko jest okej do pory, gdy chcemy dowiedzieć się nazwę klasy w kontekście statycznym. To znaczy:
<?php
class MyParentClass {
public static function munchName() {
return strtolower(get_class()); // myparentclass
}
}
class MyChildClass extends MyParentClass {
}
echo MyChildClass::munchName(); // myparentclass... WTF?!
Więcej tego, gdy próbujesz jakoś to obejść przy pomocy get_class(new self()), to wszystko jedno nic nie wyjdzie, ponieważ metoda statyczna jest odpalana w kontekście klasy, w której ją zadeklarowano.
No i na deser. O tej przykrości jest bugreport, jednakże na nim padła rezolucja, że nie będą nic tam poprawiać, bo to okazuje się zbyt skomplikowane...
No i traktuj po czymś takim (a takich błędów architekturalnych mają dużo więcej) PHP poważnie. Zabawkowy język, zabawkowe OOP, zabawkowy dynamizm.Jarosław Fedewicz edytował(a) ten post dnia 23.06.10 o godzinie 13:40