Autor Zpráva
Kybrex
Profil
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.
Jozin
Profil
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
Jak se oddělává final u vestavěných tříd PHP?
Jozin
Profil
Mastodont:
Jaj, máš pravdu... já jsem si neuvědomil, že tu BaseException má jako potomka...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0