![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 2 Dołączył: 1.08.2009 Skąd: Katowice, Rybnik Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Średnio potrafię znaleźć interesujące mnie informacje na temat metody __toString() Metodę __toString() wykorzystujemy w nowszym czy starszym PHP? Zdarzyło mi się tak, że przekazywanie obiektu do sesji bez problemu działa na jednym hostingu.. a na drugim już nie. Na jednym i drugim znajduję się PHP 5.2.10.. Od czego to zależy? Jeżeli zależy to od jakieś konfiguracji czy jakiegoś modułu.. to która instalacja PHP jest poprawna? Ta, która nakazuje wykorzystanie metody __toString() czy tak, która w sposób automatyczny przekształca obiekt w string? Chodzi mi tutaj głównie o nawyki poprawnego programowania w PHP. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
toString jest "metodą magiczną". Która pozwala, jak wiesz, przesłać obiekt jako typu String. Zazwyczaj jej ciało trzeba zdefiniować gdyż dla różnych klas może ona przyjmować różne formy. Czasem może to być zapis obiektu w formie identycznej z var_dump, ale niekonieczne.
Metoda ta jest wykorzystywana w obiektowym php gdy zachodzi konieczność konwersji obiektu. Jako że nie jest jednolita jak inne funkcje to i ciężko znaleźć jej jasną wykładnię, gdyż jest po prostu definiowalna dowolnie, podobnie jak konstruktor czy destruktor klasy. To w dużej mierze od programisty zależy jak wygląda. Frameworki często mają domyślną definicję tej klasy, przez co jest w nich ona wywoływana niejawnie i gdy wyskoczy błąd z nią, to początkujący nie wiedzą skąd się ta funkcja wzięła. Ja położyłbym ją pomiędzy funkcjami konwersji, jak choćby toObject, bo tam właśnie ona przynależy. Ze swojej strony uważam, że dobrym zwyczajem byłoby, by programista o nią dbał i definiował w klasie. No chyba, że framework już za niego o to dba i ma swoją własną, domyślną wersję, bo po co pisać coś dwa razy? Tylko w przypadku różnic powinno się przeciążyć tę metodę. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 13:39 |