Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa wywoływana statycznie i funkcja __call
Forum PHP.pl > Forum > PHP > Object-oriented programming
gothye
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
phpion
http://www.php.net/manual/en/language.oop5...loading.methods
Wygląda na to (nigdy nie używałem), że musisz skorzystać z __callStatic.
gothye
tak już próbowałem wcześniej __callStatic ale też nie działało sad.gif mam PHP 5.3
wookieb
No to pokaż kod.
gothye
  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. }

wookieb
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.
phpion
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();
gothye
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 :/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.