Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> czy mozna uzyc $zmienna::metoda() ?
squid
post
Post #1





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 3.07.2003
Skąd: Szczecin->niebuszewo->*(next to window)

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


  1. <?php
  2. $zmienna::metoda()
  3. ?>

czy mozna uzyc czegos takiego?, w zasadzie to zdaje mi sie ze nie bo jak to robie to dostaje kosmiczny komunikat o bledzie ale moze cos robie nie tak?
moze jest jakis sposob zeby "oszukac" php?
Go to the top of the page
+Quote Post
Ace
post
Post #2





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

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


mysle ze mozna pokombinowac troche z funkcja eval(); ... przy jej uzyciu napewno by sie dalo to wykonac.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Chyba mozna uzyc call_user_func() czy jakos tak.
Go to the top of the page
+Quote Post
Nievinny
post
Post #4





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 27.01.2005
Skąd: Białystok

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


@dr_bonzo -> pod warunkiem, że zmienna jest obiektem oczywiście
Wtedy będzie mniej więcej tak:
  1. <?php
  2.  
  3. call_user_func_array( array( $oVar, $sMethod ), array( $mArg1, $mArg2, ... ) );
  4.  
  5. ?>

Pisane z głowy.

A poprzez operator :: nie da się, można tylko do właściwiości statycznych i metod klay.
A więc np: SomeClass::someMethod();

Ten post edytował Nievinny 30.04.2005, 18:07:37
Go to the top of the page
+Quote Post
squid
post
Post #5





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 3.07.2003
Skąd: Szczecin->niebuszewo->*(next to window)

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


sek w tym ze musze sie odwolywac do metody statycznej po to zeby dostac referencje do obiektu bo tu uzywam singleton'u. Pobieram z konfiguracji baze danych z jaka dziala program i chcialem tworzyc obiekty klasy odpowiedzialej za zapytania do bazy przy pommocy:
$zmienna_z_konfiguracji::getInstance();

ale sie tak chyba nie da, jedyne co mi teraz do glowy przychodzi to zrobic old fashon way czyli uzyc switcha ale jestem otwarty na propozycje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował squid 30.04.2005, 18:13:03
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


@Nievinny: zgadza sie, po prostu nie pamietalem tego "szczegolu" (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ja uzywalem eval() i sprawdzalo sie.
Go to the top of the page
+Quote Post
NuLL
post
Post #7





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


  1. <?php
  2.  
  3. $instancja={$zmienna_z_konfiguracji}::getInstance();
  4.  
  5. ?>


Sprawdz to ale nie jestem pewien. Jeśli nie to eval poprostu.
Go to the top of the page
+Quote Post
Bora
post
Post #8





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 15.06.2003

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


Stałą można pobrać tak , a może jest też podobny sposób na metode.
  1. <?php
  2.  
  3. class Test {
  4. const STALA = 'BLABLABLA';
  5. } 
  6.  
  7. $class = 'Test' ;
  8. echo &#092;"$class::STALA\" . constant(\"$class::STALA\");
  9.  
  10. ?>
Go to the top of the page
+Quote Post
squid
post
Post #9





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 3.07.2003
Skąd: Szczecin->niebuszewo->*(next to window)

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


Cytat(NuLL @ 2005-05-01 14:15:20)
  1. <?php
  2.  
  3. $instancja={$zmienna_z_konfiguracji}::getInstance();
  4.  
  5. ?>


Sprawdz to ale nie jestem pewien. Jeśli nie to eval poprostu.

wtedy mam:
Parse error: syntax error, unexpected '{'
Go to the top of the page
+Quote Post
ebe
post
Post #10





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 23.01.2004

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


  1. <?php
  2.  
  3. //$page = FrontController::getInstance(); to to samo co:
  4.  
  5. $nazwaKlasy = 'FrontController';
  6. $instancja = call_user_func(array($nazwaKlasy, 'getInstance'));
  7.  
  8. ?>


Mi to działa...

Ten post edytował ebe 1.05.2005, 14:55:24
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: 22.08.2025 - 20:38