Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa wywoływana statycznie i funkcja __call
gothye
post
Post #1





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


Witam
Wywołuje klasę statycznie za pomocą :

  1. jakas_klasas::jakas_funkcja();


ale za pomoca funkcji __call chciałem zrealizować dołączanie innych funkcji które są zawarte w plikach .php wiec

wywołanie :

  1. jakas_klasa::jakas_funkcja_w_pliku();


nie idzie

gdy wywołuje klasę tak :

  1. $klasa = new klasa();
  2. // i
  3. $klasa->jakas_funkcja_w_pliku();
  4. // jest ok
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




http://www.php.net/manual/en/language.oop5...loading.methods
Wygląda na to (nigdy nie używałem), że musisz skorzystać z __callStatic.
Go to the top of the page
+Quote Post
gothye
post
Post #3





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


tak już próbowałem wcześniej __callStatic ale też nie działało (IMG:style_emoticons/default/sad.gif) mam PHP 5.3
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




No to pokaż kod.
Go to the top of the page
+Quote Post
gothye
post
Post #5





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


  1. class test
  2. {
  3. public static function __call($cos , $argv)
  4. {
  5. echo $cos ;
  6. }
  7. }
  8. // dziala
  9. $test = new test ;
  10. $test -> asas('asas');
  11. // nie dziala
  12. test::asas('asas');


czy dam wywołanie funkcji :

  1. // nie dziala
  2. public static function __callStatic($cos , $argv)
  3. {
  4. echo $cos ;
  5. }

Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A php 5.3 masz zainstalowane?
Poza tym __call nie może być statyczne

-- EDIT
@phpion
Cytat(phpion @ 28.06.2010, 15:10:19 ) *
Masz napisane w jednej z wypowiedzi autora tematu.

Uwierz mi ludzie wieeele razy mylą się nawet w takich rzeczach.


Ten post edytował wookieb 28.06.2010, 14:15:29
Go to the top of the page
+Quote Post
phpion
post
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(wookieb @ 28.06.2010, 15:02:52 ) *
A php 5.3 masz zainstalowane?

Masz napisane w jednej z wypowiedzi autora tematu.

Cytat(wookieb @ 28.06.2010, 15:02:52 ) *
Poza tym __call nie może być statyczne

To już wiemy.

@gothye:
U mnie na PHP 5.3.2 poniższy kod działa:
  1. class Test
  2. {
  3. public function __call($func , $argv) {
  4. echo '__call '.$func;
  5. }
  6.  
  7. public static function __callStatic($func , $argv) {
  8. echo '__callStatic '.$func;
  9. }
  10. }
  11.  
  12. $obj = new Test();
  13. $obj->x();
  14.  
  15. Test::x();
Go to the top of the page
+Quote Post
gothye
post
Post #8





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


tak już jest ok ,dopiero po upgrade PHP na 5.3.1 z repo debiana ruszyło ,ale dla mnie coś dziwnego wg dokumentacji jest dostępne od wersji 5.3.0 :/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 06:27