Паттерн Singleton в чём разница? Прочитал описание тут:job-blog.bullgare.ru/2009/07/паттерны-проектирования-в-php Некоторые ресурсы приложения уникальны, т.е. может быть один и только один его экземпляр. К примеру, соединение с базой данных через соответствующий дескриптор уникально. Нам нужно иметь доступ к созданному дескриптору базы данных, т.к. каждый раз при запросе открывать и закрывать соединение во время загрузки страницы накладно Для этого отлично подойдёт паттерн Singleton. Объект является синглтоном, если в приложении можно обратиться к одному и только к одному такому объекту Пример кода там на странице не смог скопировать Вопрос: чем этот навороченный код лучше$db = mysqli_connect('localhost','aa','bb','cc') mysqli_set_charset($db, "utf8") Вот $db это Singleton ))
Отличие между использованием паттерна Singleton и простым созданием объекта базы данных mysqli_connect заключается в том, что Singleton позволяет создать только один экземпляр объекта и обеспечивает глобальный доступ к этому объекту из любой точки приложения.
В случае с использованием паттерна Singleton, код будет выглядеть примерно следующим образом:
class Database private static $instance private $connection private function __construct() $this->connection = mysqli_connect('localhost','aa','bb','cc') mysqli_set_charset($this->connection, "utf8")
public static function getInstance() if (!self::$instance) self::$instance = new Database()
return self::$instance
public function getConnection() return $this->connection
// Использование Singleto $db = Database::getInstance() $connection = $db->getConnection();
Таким образом, в приведенном примере объект Database создается только один раз, и каждый раз, когда требуется доступ к базе данных, можно получить экземпляр объекта Database с помощью метода getInstance() и получить доступ к соединению с базой данных через метод getConnection(). Это позволяет избежать создания множества соединений с базой данных, что может быть неэффективно и накладно.
Отличие между использованием паттерна Singleton и простым созданием объекта базы данных mysqli_connect заключается в том, что Singleton позволяет создать только один экземпляр объекта и обеспечивает глобальный доступ к этому объекту из любой точки приложения.
В случае с использованием паттерна Singleton, код будет выглядеть примерно следующим образом:
class Databaseprivate static $instance
private $connection
private function __construct()
$this->connection = mysqli_connect('localhost','aa','bb','cc')
mysqli_set_charset($this->connection, "utf8")
public static function getInstance()
if (!self::$instance)
self::$instance = new Database()
return self::$instance
public function getConnection()
return $this->connection
// Использование Singleto
$db = Database::getInstance()
$connection = $db->getConnection();
Таким образом, в приведенном примере объект Database создается только один раз, и каждый раз, когда требуется доступ к базе данных, можно получить экземпляр объекта Database с помощью метода getInstance() и получить доступ к соединению с базой данных через метод getConnection(). Это позволяет избежать создания множества соединений с базой данных, что может быть неэффективно и накладно.