Overview

Namespaces

  • codemania
    • core
      • exception
    • library
      • database
        • drivers
  • None
  • PHP

Classes

  • Cookie
  • Core
  • Crypt
  • HTTP
  • Request
  • Route
  • Security
  • Singleton
  • Overview
  • Namespace
  • Class
  • Tree
  • Deprecated
  • Todo
  • Download
 1: <?php
 2: namespace codemania\core;
 3: /**
 4:  * CodeMania Framework
 5:  * 
 6:  * @author CodeMania Team <team@codemania.ru>
 7:  * @license http://codemania.ru/license.html
 8:  * @package CodeMania
 9:  * @version 1.0.0
10:  * @copyright (c) 2014, CodeMania Team
11:  * @link  http://codemania.ru/
12:  */
13: defined('CM_ROOT') or exit('Заперт доступа!');
14: /**
15:  * Singelton
16:  * 
17:  * @author CodeMania Team <team@codemania.ru>
18:  * @license http://codemania.ru/license.html
19:  * @package CodeMania
20:  * @version 1.0.0
21:  * @copyright (c) 2014, CodeMania Team
22:  * @link  http://guide.codemania.ru/class_Singelton.html
23:  */
24: abstract class Singleton {
25:     /**
26:      * Обьект наследуемого класса
27:      */
28:     static protected $_instance = false;
29:     /**
30:      * Возвращает обьект наследуемого класса
31:      */
32:     static public function instance() {
33:         // В PHP версии ниже 5.3.0 работать не будет
34:         Core::check_php_version('5.3.0');
35:         // Если Singelton еще не был обьявлен
36:         if (self::$_instance === false) {
37:             // Передаем имя дочернего класса в переменную 
38:             $instance_class = get_called_class();
39:             // Передаем обьект доернего класса 
40:             self::$_instance = new $instance_class();
41:         }
42:         // Передаем обьект класса
43:         return self::$_instance;
44:     }
45:     /**
46:      * Запрещает клонировать Singelton
47:      * @throws \LogicException
48:      */
49:     public final function __clone() {
50:         // Вызов функции выбрасывает исключение
51:         throw new \LogicException('Невозможно клонировать Singelton!');
52:     }
53: }
CodeMania Framework API documentation generated by ApiGen 2.8.0