![]() |
![]() |
![]()
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: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
http://www.php.net/manual/pl/language.oop5....magic.tostring
Cytat 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? SOA1 Moze bys pokazal kod i ew. komunikaty bledu, ciastka sesyjne itp. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
![]() 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ę. -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
@edit
post powyżej jest jak monolog prezydenta, o wszystkim i o niczym, masło maślane, coś z czegoś coś do czegoś, ale po co i jak to ni huhu. Bezsensu człowieku opisujesz problem. dajmy na to:
szybkie objaśnienie czym jest __toString(); Ten post edytował cojack 13.10.2009, 10:00:21 -------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Czuję się wezwany do tablicy przez cojacka i streszczę mój post poprzedni jeśli zagmatwałem. __toString to po prostu funkcja specjalna reagująca na wywołanie obiektu w kontekście stringa (czyli -> echo $a)
Rzucę szerszym przykładem, by pokazać dokładniej działanie skoro napisałem masło maślane ![]() Zastosowania tego nie widać może od razu, ale przydaje się przy pisaniu własnego CMS w MVC, gdzie widok śmiało może być obiektem i przez to wysłany być do przeglądarki jako część większego widoku. Jeśli więc masz cały layout jako choćby lewe - centrum - prawe to możesz zrobić tak:
Co to da? Wstawi ankietę i nawigację jako jeden string wysłany do widoku lewe ![]() Ten post edytował thek 13.10.2009, 14:11:43 -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 23:56 |