Простой способ передать объект DB в класс, который расширяется многократно
Рассмотрим следующий PHP-код:
<?php
require_once("myDBclass.php");
class a {
private $tablename;
private $column;
function __construct($tableName, $column) {
$this->tableName = $tablename;
$this->column = $column;
}
function insert() {
global $db;
$db->query("INSERT INTO ".$this->tableName." (".$this->column.") VALUES (1)");
}
}
class x extends a {
function __construct() {
parent::construct("x", "colX");
}
}
class y extends a {
function __construct() {
parent::construct("y", "colY");
}
}
?>
У меня есть объект $db, экземпляр которого находится в другом файле, но я хочу каким-то образом передать его в функции класса a без использования глобального ключевого слова каждый раз, когда я определяю новую функцию в классе "a".
Я знаю, что могу сделать это, передавая объект DB при создании экземпляра класса X и Y, а затем передавая его в класс A таким образом (как я сейчас делаю с именем таблицы и столбцом), однако я никогда не знаю, сколько раз я мог бы расширить класс А и подумал, что должен быть какой-то другой, более легкий путь.
Кто-нибудь знает лучшее решение, которое я мог бы рассмотреть для достижения этой цели?
Заранее спасибо
2 ответа:
Загляните всинглетный шаблон проектирования . У вас не должно быть необходимости использовать
globals
, поскольку вы, кажется, знаете, что это не обязательно.