PHP i sprawdzanie typów.
W PHP klasa nie ma plików nagłówkowych, a klasa musi być umieszczona w pliku wywołanym przez include/require.
Powoduje to trudności gdy chcę napisać klasę automatyzującą pewne czynności. Mam na przykład metodę statyczną isA($var, $type), która sprawdza czy $var jest $type lub wyrzucać odpowiedni wyjątek(w skrócie).
Testuje to za pomocą PHPUnit2. Sprawdzam czy $this jest MojaKlasaUnitCase. Okazuje się, że nie ma takiej klasy, gdyż klasa wyjątków jest require'owana przez ten plik więc jest przed definicją klasy. Z koleji gdyby to było na końcu to klasa wyjątków byłaby niezadeklarowana. Zadam prostę pytanie. Skoro python, java czy .net(mono lub dotgnu jeśli ktoś woli) jakoś to rozwiązują, a nawet C/C++ (pliki nagłówkowe), to dlaczego PHP nie może?
Komentarze do wpisu
Możesz śledzić odpowiedzi poprzez kanał RSS. Możesz dodać komentarz lub zostawić ślad (trackback) ze swojego bloga.
wb
Bo to jeden wielki, brzydki hack, który rozrósł się do niemalże ,,industry standard''. PHP po prostu nie jest dobrze zaprojektowane Planowali poprawić w PHP5, teraz planują poprawić w PHP6, a ja czekam aż ISP mojego pracodawcy będzie hostował pythona.
11 grudnia 2005, 21:34:12
uzytkownik
Ja ten projekt wykonuje na zajęciach, a prowadzący nie zna pythona.
Wydaje mi się, że jedno z dwojga - albo wyrzucamy 'preprocesor' - albo dodajemy coś na kształt plików nagłówkowych :)
Życzę krótkiego czekania.
11 grudnia 2005, 21:41:33
zgoda (jarek)
Zaraz, a czy nie jest tak, że w PHP jest tylko jedna przestrzeń nazw? To w metodzie setUp() trzeba zaimportować wszystko, co potrzebne, do tej głównej przestrzeni i spoko.
11 grudnia 2005, 22:09:36
uzytkownik
Nie jeśli zarówno X korzysta z Y jak Y z X ;)
Tutaj zaczynają się schody - Y musi być przyd X, a X przed Y :)
12 grudnia 2005, 07:12:02
Dodaj komentarz