2014-01-22 2 views
0

Я хочу использовать статический метод класса example без экземпляра класса. Этот метод использует класс dependencie и создается с помощью метода __construct. Как создать этот класс зависимостей. Пример:Мгновенные зависимости классов со статическим методом

class user { 
    protected static $db; 

    public function __construct() { 
     self::$db = database::getInstance(); 
    } 

    public static function get_user() { 
     $user = self::$db->query("sql"); 
     return $user; 
    } 
} 

Я знаю, что решение с автозагрузчиком или я мог бы просто добавить self::$db = database::getInstance(); в каждом статическом методе. Может ли кто-нибудь любезно показать мне лучшие предложения?

ответ

2

Вы можете добавить статический и присваивателя для объекта БД и сгенерирует исключение, если кто-то пытается получить доступ к геттер без вызова сеттера первый:

class User 
{ 
    protected static $db; 

    public static function setDB($db) 
    { 
    self::$db = $db; 
    } 

    protected static function getDB() 
    { 
    if (!self::$db) { 
     throw new Exception('You must `setDB()` the db object before attempting to get it.'); 
    } 

    return self::$db; 
    } 

    public static function getUser() 
    { 
    return self::getDB()->query('sql'); 
    } 
} 

User::setDB(database::getInstance()); 
User::getUser(); 
Смежные вопросы