{% else-1 %}
Когда я начинал изучать OOP, столкнулся с проблемой. Соединение с БД у меня было в не класса User и поэтому вылетала ошибка. Конечно можно сделать переменную с конекто глобальной, или же запускать новый конект в классе, но это не правильно. Погуглив, я нашел решение в виде паттерна Registry.

Что такое Registry?
Это так сказать \"хранилище\" перменных.
Вызывается в любом месте.

Две основные функции:
addVar - добавляет переменную
getVar - возвращает переменную.

Использование:
$db = new PDO ( ... ) ;
storage::addVar ( \'db\', $db ) ;

И в классе User уже
$sql = storage::getVar ( \'db\' ) -> query ( ... ) ;

Вот и все. Надеюсь кому то пригодится.

                        
Class storage {

private $storage = array();

static public function addVar ( $key, $value ) {
$this->$sorage [ $key ] = $value;
}

static public function getVar ( $key ) {
if ( isset ( $this->$storage [ $key ] ) ) {
return $this->$storage [ $key ] ;
}
return NULL;
}
}
0 35 0
Без комментариев...