Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: singleton dynamicznie.. jak?
Forum PHP.pl > Forum > PHP > Object-oriented programming
LBO
Mam problem.. wykorzystalem factory patern w klasie bedacym loaderem drivera wczesniej zdefiniowanej bazy danych. Problem powstal gdy zamiast nowej instancji drivera, chcialem wywolac Singleton
Podam w prostym przykładzie:
  1. <?php
  2.  
  3. class DatabaseLoader {
  4. public static function factory($type) {
  5. if (include_once 'drivers/'.$type.'.php') {
  6. $classname = 'Driver_'.$type;
  7. //tutaj jest blad parsera
  8. return {$classname}::singleton;
  9. } else {
  10. throw new Exception ('Driver not found');
  11. }
  12. }
  13. }
  14.  
  15. /*
  16.  *wczesniej w kodzie:
  17.  *
  18.  *$type = 'MySQL';
  19. */
  20. $database = DatabaseLoader::factory($type);
  21.  
  22. ?>

Czy da sie dynamicznie wywołać Singleton'a. Chcialbym uniknac wpisywania if'ów dla każego drivera bazy danych, bo mijaloby sie to z celem sad.gif
SongoQ
Mozesz takie cos: DatabaseLoader::factory($zmienna); chyba ze Cie nie zrozumialem o co chodzi.
LBO
nie zrozumiałeś.. tongue.gif chodzi mi o to jak mam dynamicznie odwołać się do statycznej metody.. (kurde, zabrzmialo to jakbym sobie sam odpowiedzial, ze nie mozna :/)
dr_bonzo
np. eval()'em
Termit_
No właśnie,
  1. <?php
  2. if(class_exists($type)) {
  3. eval('return ' . $type . '::singleton');
  4. }
  5. ?>
LBO
dzieki wielkie :*
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.