Я создаю приложение PHP, которое должно взаимодействовать с несколькими структурно идентичными базами данных. Я хотел бы использовать одноэлементный завод для передачи соединений с базами данных и сведения к минимуму количества дублированных подключений. Я также хотел бы обернуть класс базы данных несколькими функциями.Singleton factory для управления и упаковки нескольких объектов базы данных
Было бы очень удобно, если бы я мог сделать все это в одном классе. Я пробовал использовать одноэлементный завод (в то время это казалось хорошей идеей), только чтобы понять, что, похоже, нужно возвращать другие классы, чтобы быть полезными. Есть ли простой способ объединить функциональные возможности фабрики singleton и базы данных, или я должен просто поместить функции переноса базы данных в другой класс?
static private $instance = array();
private function __construct($name) {
switch ($name) {
//select db connection
}
$this->db = $this->getDb();
return;
}
protected function __clone() {
}
public static function singleton($name) {
if (!isset(self::$instance[$name])) {
$c = __CLASS__;
self::$instance[$name] = new $c($name);
}
return self::$instance[$name];
}
public function wrapperFunction() {
//stuff
}
посмотрел интерфейсы? :) – nathan
Просьба пояснить часть дублирующих подключений. Собираетесь ли вы подключиться к одной базе данных для выполнения нескольких задач в рамках одного и того же процесса? Расскажите нам немного подробнее о том, что вы делаете. – GoalBased
Если бы я сделал это, похоже, я бы разделил относительно короткий бит кода на два класса. Кроме того, зачем использовать интерфейс вместо общего класса-оболочки? – James