PHP создание объектов

197
08 апреля 2017, 00:31

Добрый день, извиняюсь, скорее всего вопрос тупой, но как создать объект один раз за все время работы приложения? Есть точка входа, там хочу создать объект DataBase.

$db = new DataBase($parameters);

Во всех остальных файлах хочу чтоб можно было просто делать так:

$db->select($query);
Answer 1

Возможно вам нужен паттерн Singleton.

class DB {
  private function __construct(){} // запрет new DB()
  private function __wake(){}      // запрет unserialize
  private function __clone(){}     // запрет clone $db;
  private static $db = null;
  public static function get($params) {
    return self::$db ?: self::$db = new self();
  }
  public function setup($params) {/*...*/}
}

Использование:

DB::get()->setup($config);
...
DB::get()->select(...);

Одна из проблем этого паттерна в том, что иногда нам может понадобиться второе соединение - придётся как-то с этим бороться.

Также, по сути это создание зависимости от глобального контекста. Неочевидно, какие классы теперь зависят от DB.

Намного лучше просто создать объект и передавать его всем, кто в нём нуждается(DI).

Answer 2

Используйте статическую переменную класса для хранения подключения к бд и почитайте по поводу шаблона singleton

READ ALSO
Запрос mysql на выборку из двух таблиц

Запрос mysql на выборку из двух таблиц

Есть две табицы: category и newsНужно сделать выборку чтобы показывало 5 новостей каждой категори

228
Регулярные выражения C++

Регулярные выражения C++

Имеется следующий код:

203
Ошибка при чтении символов из строки

Ошибка при чтении символов из строки

Пытаясь делать курсач застрял вот на таком моменте: Вот скрин кансоли на каком месте остановилась прога: А делаю я решение системы линейных...

406