Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] pytanie o singleton
Forum PHP.pl > Forum > Przedszkole
piotrekkr
witam mam takie cos :
  1. <?php
  2. class DB{
  3. private function __constaruct($host,$user,$pass,$db){
  4. $this->db=mysql_pconnect($host,$user,$pass);
  5. mysql_select_db($db,$this->db);
  6. }
  7.  
  8. public static function singleton() {
  9. if (!isset(self::$instance)) {
  10.  $c = __CLASS__;
  11.  self::$instance = new $c;
  12.  }
  13. return self::$instance;
  14.  }
  15. }
  16. ?>


no i jak wywoluje singleton
  1. <?php
  2. $test = DB::singleton();
  3. ?>
no to on mi robi nowa klase tak tylko nie wiem jak zrobic zeby przez singleton dodac te parametry do konstruktora. No bo raczej musze je dodac zeby mi ustawilo polaczenie. wie ktos jak to zrobic przez ten singleton??
LBO
  1. <?php
  2. public static function singleton($host,$user,$pass,$db) {
  3. //code
  4. self::$instance = new $c($host,$user,$pass,$db);
  5. //code
  6. ?>
piotrekkr
aha myslalem ze tak do zmiennej nie mozna doczepic poprostu nawiasow ze zmiennymi ale zdaje sie ze w tym przypadku mozna dzieki i pozdrawiam smile.gif
Cysiaczek
Warto również zadeklarować składową $instance, bo twój kod robi ją dynamicznie, co nieco zaciemnia obraz klasy.
LBO
To dam na przyszłośc, może się przyda.
  1. <?php
  2. class Singleton
  3. {
  4. private static $instance;
  5.  
  6. private function __construct($param)
  7. {
  8. print('SingletonClass::__construct("'.$param.'");'.PHP_EOL);
  9. }
  10.  
  11. public static function getInstance($param)
  12. {
  13. if (!isset(self::$instance)) {
  14. $classname = __CLASS__;
  15. self::$instance = new $classname($param);
  16. };
  17. return self::$instance;
  18. }
  19. };
  20.  
  21. $instance = Singleton::getInstance('param-1');
  22. ?>
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.