SergXP
Новичок
Всем доброе время суток!
Прощу помощи подсказать, как организовать подобное наследование.
Имеем классы:
Db - работа с БД.
Model - SQL запросы
и неограниченное кол-во классов наследованных от Model. допустим:
Users, Settings
Что должно происходить, при вызове класса Users(или Settings) должна произойти проверка на подключение к бд. Если подключение отсутствует, подключиться. Т.е. дать возможности вызывать много разных моделей, но подключение должно быть установлено один раз при объявлении любой первой модели))
В принципе мне удалось с этим разобраться.. только вот загвоздка.. как сделать так, чтобы классы автоматически запускали конструкторы... сейчас покажу на примере:
Возможно ли сделать так, чтобы при объявлении классов-моделей, которые наследуются от Model,
автоматически вызывался конструктор класса Model?
Спасибо.
Прощу помощи подсказать, как организовать подобное наследование.
Имеем классы:
Db - работа с БД.
Model - SQL запросы
и неограниченное кол-во классов наследованных от Model. допустим:
Users, Settings
Что должно происходить, при вызове класса Users(или Settings) должна произойти проверка на подключение к бд. Если подключение отсутствует, подключиться. Т.е. дать возможности вызывать много разных моделей, но подключение должно быть установлено один раз при объявлении любой первой модели))
В принципе мне удалось с этим разобраться.. только вот загвоздка.. как сделать так, чтобы классы автоматически запускали конструкторы... сейчас покажу на примере:
PHP:
// Класс для работы с базой(подключение и тп)
class Db {
static $instance = NULL;
function __construct() { return self::getInstance(); }
function __clone() { }
static function getInstance(){
if(is_null(self::$instance)){
self::$instance = self::buildInstance();
}
return self::$instance;
}
private static function buildInstance(){
$instance = 'connect ok database';
echo $instance;
// пока уберу подключение, пусть будет работают echo и return
//try{
//new PDO(DB_DSN, DB_USER, DB_PASS);
//}catch(PDOException $e){
// echo $e->getMessage();
//}
return $instance;
}
}
// Класс модели, тут будут находиться общие методы для работы с SQL
class Model extends Db {
public function __construct() {
parent::__construct(); // вызываем конструктор класса Db
}
}
// это уже сами модели, их будет множество...
class Users extends Model {
public function __construct() {
}
public function getuser($id) {
return $id;
}
}
class Settings extends Model {
public function __construct() {
}
}
автоматически вызывался конструктор класса Model?
Спасибо.