PageRenderTime 44ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/classes/singleton.php

https://github.com/MilkZoft/zan
PHP | 45 lines | 45 code | 0 blank | 0 comment | 1 complexity | 9e6312527e18f1069e6aed3602da1e01 MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. if (!defined("ACCESS")) {
  3. die("Error: You don't have permission to access here...");
  4. }
  5. class ZP_Singleton
  6. {
  7. public static $instances = array();
  8. private final function __clone() {}
  9. private function __construct() {}
  10. public static function instance($Class, $params = NULL)
  11. {
  12. if (is_null($Class)) {
  13. die("Missing class information");
  14. }
  15. if (!array_key_exists($Class, self::$instances)) {
  16. $args = NULL;
  17. $i = 0;
  18. if (is_array($params)) {
  19. foreach ($params as $param) {
  20. if ($i === count($params) - 1) {
  21. $args .= '"'. $param .'"';
  22. } else {
  23. $args .= '"'. $param .'", ';
  24. }
  25. $i++;
  26. }
  27. }
  28. if (is_null($args)) {
  29. self::$instances[$Class] = new $Class;
  30. } else {
  31. eval("self::\$instances[\$Class] = new \$Class($args);");
  32. }
  33. }
  34. return self::$instances[$Class];
  35. }
  36. }