Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Hermetyzacja i singleton
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
rotkiwer
Witam,
Natknąłem się na dość dziwny problem. Chce stworzyć obiekt klasy(a właściwie pobrać referencje - singleton), której nazwy nie znam. Nazwa ta jest zapisana w pliku konfiguracyjnym. Gdybym chciał stworzyć nową instancje klasy(a nie pobrać referencję) problem rozwiązałby kod:
  1. <?php
  2. $objectX = new $className();
  3. ?>

Jednak klasa, do której chcę się dostać jest singletonem.
Dokonując kilku zmian i wykorzystując operator wyłuskania( :: ) kod powinien wyglądać tak:
  1. <?php
  2. $objectX = $className::__singleton();
  3. ?>

Niestety, php wypluwa niezrozumiały błąd o treści ‘Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in (…)’

Będe wdzięczny za wszelkie podpowiedzi i sugestie związane z tematem.
rogrog
http://www.php.net/manual/pl/tokens.php
dr_bonzo
1. T_PAAMAYIM_NEKUDOTAYIM to jst '::' czworkropek w jakimstamjezyku
2. $objectX = $className::__singleton(); << takie cos nie przejdzie
  1. <?php
  2. eval( '$objectX = ' . $className . '::__singleton();');
  3. ?>
DeyV
Cytat(manual)
call_user_func --  Call a user function given by the first parameter
Description
mixed call_user_func " title="Zobacz w manualu PHP" target="_manual( callback function [, mixed parameter [, mixed ...]])


Object methods may also be invoked statically using this function by passing array($objectname, $methodname) to the function parameter.

  1. <?php
  2. class myclass {
  3. function say_hello() 
  4. {
  5. echo&#092;"Hello!n\";
  6. }
  7. }
  8.  
  9. $classname =&#092;"myclass\";
  10.  
  11. call_user_func(array($classname, 'say_hello'));
  12. ?>
rogrog
Cytat(dr_bonzo @ 2005-03-16 19:30:35)
T_PAAMAYIM_NEKUDOTAYIM to jst '::' czworkropek w jakimstamjezyku

po hebrajsku AFAIR
ms.
Cytat(rogrog @ 2005-03-16 18:37:55)
Cytat(dr_bonzo @ 2005-03-16 19:30:35)
T_PAAMAYIM_NEKUDOTAYIM to jst '::' czworkropek w jakimstamjezyku

po hebrajsku AFAIR

heh - no w końcu php robią w Izraelu :D
Cytat
Zend Technologies, Ltd.
7 Abba Hillel Street
Silver Building
Ramat Gan, Israel 52136
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-2024 Invision Power Services, Inc.