Я новичок в PHP oop.Расширение mysqli и использование нескольких классов
Я пытаюсь создать базу данных классов и вызвать из нее другие классы. Правильно ли я делаю это?
класс базы данных:
class database extends mysqli {
private $classes = array();
public function __construct() {
parent::__construct('localhost', 'root', 'password', 'database');
if (mysqli_connect_error()) {
$this->error(mysqli_connect_errno(), mysqli_connect_error());
}
}
public function __call($class, $args) {
if (!isset($this->classes[$class])) {
$class = 'db_'.$class;
$this->classes[$class] = new $class();
}
return $this->classes[$class];
}
private function error($eNo, $eMsg) {
die ('MySQL error: ('.$eNo.': '.$eMsg);
}
}
класса db_users:
class db_users extends database {
public function test() {
echo 'foo';
}
}
и как я использую его
$db = new database();
$db->users()->test();
Является ли это правильный путь, или это должно быть сделано по-другому ?
спасибо.
Там кажется, нет ничего плохого с кодом. Я не уверен, что вы спрашиваете здесь. В качестве побочного примечания я бы рекомендовал не расширять mysqli и не создавать его в вашем классе. Он не появляется, поскольку вы получаете что-либо от его расширения в этот момент. – tylermac
Спасибо за ваш комментарий. Линия, которая меня беспокоит, - это $ db-> users() -> test() ;. Я в порядке, чтобы создавать новые классы с __call(), или должен ли я каждый раз делать что-то вроде $ u = new db_users(); $ U-> тест(); – Mikk