Autor | Zpráva | ||
---|---|---|---|
Kybrex Profil |
#1 · Zasláno: 22. 7. 2011, 14:21:55
Zdravím,
po instalaci nové verze PHP přestaly fungovat některé testy. Zřejmě došlo v novější verzi PHP k nějaké změně, protože jsem byl zvyklý mít svou třídu BaseException, která přepsala konstruktor, který zajistil do členské proměnné message vložení mého objektu Message, který disponoval metodou __toString a měl jsem tak elegantně vyřešený překlad výjimek spolu s použitím zástupných symbolů pro doplnění dat do chybových hlášek. Nyní PHP píše chybu, že message smí být jen string a co hůř, že metoda getMessage je final, takže jí nemohu přepsat, aby vracela třeba messageObject. Nenapadá někoho dobrá rada, jak to elegantně obejít? díky. |
||
Časová prodleva: 4 dny
|
|||
Jozin Profil |
#2 · Zasláno: 26. 7. 2011, 14:02:44
Zdravím,
možná by bylo také dobré sem dát zdrojový kód. Věšteckou koulí se asi nikdo přesně netrefí, ale z toho, co ti to háže, bych se mrknul, jak vlastně tu message proměnnou plníš. Pokud píše, že smí být jen string, tak musíš mít někde nějaké testování na string, nebo mě nenapadá možnost, kdy by PHP vyhodilo chybu, že chce string. Dál u metody getMessage si prostě oddělej final a nebo ji prostě nepřepisuj. Pokud chceš lepší radu, dej sem zdroják. |
||
Mastodont Profil |
#3 · Zasláno: 26. 7. 2011, 16:58:59
Jak se oddělává final u vestavěných tříd PHP?
|
||
Jozin Profil |
#4 · Zasláno: 26. 7. 2011, 19:48:44
Mastodont:
Jaj, máš pravdu... já jsem si neuvědomil, že tu BaseException má jako potomka... |
||
Časová prodleva: 13 let
|
0