![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) ![]() ![]() |
Szukam wyjaśnienia funkcji __call. Wiem że ona woła obiekty następne po niej i w sposób niejawny je może przeładować czyli edytować w locie. Znalazłem taki kod lecz nie za bardzo go rozumiem - nie wiem czy jest on poprawny:
Mam pytanie dlaczego (array) jest w nawiasach zwracając tym samym NULL? Wypluwa taki błąd: Cytat Notice: Array to string conversion in C:\xampp\htdocs\Untitled-2.php on line 11
Array Fatal error: Call to a member function doRunTest() on null in C:\xampp\htdocs\Untitled-2.php on line 13 Ten post edytował MESSIAH :) 5.01.2015, 21:34:50 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Skoro $arguments jest tablicą to jak chcesz ją echo-wać?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli się nie mylę... _call jest wywoływana gdy wywolujesz nie istniejącą metodę. RunText() nie istnieje, więc wykonuje się __call, w którym zwracasz $this->xy, które jest NULL. Czego nie rozumiesz? edit: oznacza tyle, że $arguments musi być typu array. - mogę się mylić ;] Ten post edytował Forti 5.01.2015, 21:35:13 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) ![]() ![]() |
Skoro $arguments jest tablicą to jak chcesz ją echo-wać? Bo chcę wyświetlić zawartość zmiennej. Zmieniłem na print_r i działa.
Jeżeli się nie mylę... _call jest wywoływana gdy wywolujesz nie istniejącą metodę. RunText() nie istnieje, więc wykonuje się __call, w którym zwracasz $this->xy, które jest NULL. Czego nie rozumiesz? edit: oznacza tyle, że $arguments musi być typu array. - mogę się mylić ;] Czyli (array) oznacza iż zmienna musi mieć taki typ? Nawet jak usunę NULL ze zmiennej to jest ten sam efekt bez różnicy czy jest wartość czy jej nie ma. Więc mam rozumieć że __call służy do nie istniejących metod? Ten post edytował MESSIAH :) 5.01.2015, 21:41:23 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
(array) to jest rzutowanie do tablicy.
Cytat Bo chcę wyświetlić zawartość zmiennej Ale to jest tablica. Po co bierzesz się za __call() jak nie znasz podstaw tablic. Zobacz masz: $arguments['dsd'] = 'mt'; więc to tablica, a tablic nie wyświetla się echo $nazwaTablicy |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) ![]() ![]() |
Pytam bo interesuję sie OOP i znam schemat działania funkcji oraz klasy. A dopierod dzisiaj spotkałem się z (array) dlatego mnie to ciekawiło bo zawsze widziałem array( 'wartość' => przekierowanie) Czyli robiąc (array) rzutuję do nieistniejącej tablicy? Więc jak powinien wglądać przykład aby został dodany array do RunTest?
Przeszukałem google pod względem otrzymanego błędu i otrzymałem wyniki do CMSów oraz frameworków. Mało jest wyników na ten temat. Ten post edytował MESSIAH :) 5.01.2015, 22:11:14 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 89 Dołączył: 31.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) ![]() ![]() |
Cytat In other words, (array)$scalarValue is exactly the same as array($scalarValue). Niestety (array)$var to nie to samo co array ($var) Jak widać w moim przykładzie mam funkcję __call, która nadpisuje metody zdefiniowane później i dodaje wartości z $arguments: I gdy zmienię ten kod na przykład podany z cytatu: Nie zostaną prawidłowo dodane argumenty. Sądzę że istnieje jakaś różnicy między (array) a array(). |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Niestety (array)$var to nie to samo co array ($var) A wg. mnie tak. Dowód: Kod:
Wynik: Kod array(1) {
[0]=> string(5) "sting" } array(1) { [0]=> string(5) "sting" } ========= array(1) { [0]=> string(5) "sting" } array(1) { [0]=> string(5) "sting" } |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 12:34 |