Одноэлементный образец, похоже, подходит для этого на землю.
class Database
{
private static $instance;
public function getInstance()
{
if(self::$instance == null)
{
// Create a connection to the database.
// NOTE: Use PDO or mysqli. mysql is deprecated.
}
return self::$instance;
}
}
Использование
В классах, вместо вызова connect
, предполагая, что вы используете PDO
объект, вы могли бы сделать что-то вроде:
$db = Database::getInstance();
$statement = $db->prepare("SELECT * FROM tblName WHERE val = :val");
$statement->bindParam(":val", $value);
$statement->execute();
$result = $statement->fetchAll();
Почему этот шаблон?
Шаблон Singleton имеет то преимущество, что один экземпляр сам по себе существует за один раз. Это означает, что вы только создадите одно соединение с базой данных.
установка этой
Итак, первое, что вы хотите сделать, это создать новый файл, назовем его Database.php
. Внутри Database.php
вы хотите написать код, который я написал, только NOTmysql_*
. Посмотрите на PDO
учебник, который я представил, о том, как подключиться к базе данных с использованием PDO
объекта, а затем поместить этот код соединения внутри if statement
, так что это может выглядеть примерно так:
if(self::$instance == null)
{
self::$instance = new PDO('mssql:host=sqlserver;dbname=database', 'username', 'password');
}
Тогда , чтобы использовать его в другом классе, поставьте оператор require
вверху. Что-то вроде:
require_once('Database.php');
Наконец, посмотрите на код, который я поставил в разделе use
выше. Так вы используете его в своем классе.
Полезные ссылки
PDO Учебник: http://php.net/manual/en/book.pdo.php
Singleton Pattern: http://www.oodesign.com/singleton-pattern.html
создать одноэлементный объект/или шаблон реестра и сохранить связь там. и читать при необходимости – DevZer0
Подробнее об этом здесь: http://programmers.stackexchange.com/questions/171300/db-object-passing-between-classes-singleton-static-or-other –
Остановить использование 'mysql'-функций , они скоро будут устаревшими! Вместо этого используйте mysqli или PDO. – Pieter