![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 12.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cześć, w klasie bazowej mam metodę display() i __toString obie mają robić to samo, czyli wyświetlić kod, w tym przypadku akurat HTML. W klasie która dziedziczy po bazowej jest właściwość _view, która jest użyta w powyższych metodach. Gdy chcę wyświetlić kod przy pomocy metody display() wszystko działa, niestety przy wywołaniu metody __toString dostaję następujący komunikat:
Kod Method Editor_Elrte::__toString() must return a string value Uproszczony kod klas wygląda następująco:
Chciałbym, aby można było wyświetlić kod na dwa sposoby:
Pozdrawiam EDIT: jeszcze taka ciekawostka. Poniższy kod działa prawidłowo. Kod echo $editor->render()->__toString();
Ten post edytował symonides 7.08.2011, 21:18:36 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat ethod Editor_Elrte::__toString() must return a string value Co jest niezrozumiałego w tym komunikacie?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 12.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Komunikat jest jak najbardziej zrozumiały, ale przecież, z tego co rozumiem kod który sam pisałem, to skoro display() wyświetla mi stringa ($this->_view) to czemu metoda __toString nie zwraca stringa ($this->_view)?
Ten post edytował symonides 7.08.2011, 21:20:56 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
A zobacz czy klasa View nie ma metody toString, która w twoim przypadku zwraca zmienną. Robiąc $this->render() zwracasz obiekt.
-------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Musisz rzucić to na stringa lub wykonać na obiekcie View metodę __toString.
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 12.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Więc tak klasa View posiada metodę __toString(), czyli echo $editor->render() zadziała wtedy kiedy ja zwrócę $this->_view, a ja chcę zwrócić w metodzie $this żeby można było łańcuchowo wywoływać metody. Podsumowując chciałbym aby działał ten sposób z echo, jak i ten sposób z wywołaniem metody display(). wychodzi na to że do metody render() będę musiał przekazać parametr typu bool i sprawdzić instrukcją warunkową co ma metoda render() zwrócić($this->_view czy $this). Inaczej tego rozwiązać nie umiem.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 12.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie o to chodzi, klasa View posiada metodę __toString() i rzutowanie nie jest potrzebne, bo jak zrobię echo to wywoła __toString(). Czyli jedyna opcja jaka przychodzi mi na myśl to
Może troszkę niefortunnie dobrany przykład, ale obrazuje o co chodzi.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Metoda __toString musi zwracać STRING ona nie rzutuje sama w sobie na STRING'a jak to robi echo czy inne tego metody typu czyli musisz wywołać samemu metodę __toString na zwracanym obiekcie lub rzutować na string samemu.
-------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 24 Dołączył: 30.03.2009 Skąd: Rokitno Szlacheckie Ostrzeżenie: (0%) ![]() ![]() |
sprawdź czy nie zwraca exception
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 12.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Melkorm dobrze mówił, chociaż miałem wrażenie, że już próbowałem ten sposób. Dzięki i pozdrawiam.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.06.2025 - 20:01 |