Целта
Както виждам, целта ви в този случай е двойна:
- създайте и поддържайте единична/многократна връзка за база данни
- уверете се, че връзката е настроена правилно
Решение
Бих препоръчал да използвате както анонимна функция, така и фабричен модел за работа с PDO връзка. Използването му би изглеждало така:
$provider = function()
{
$instance = new PDO('mysql:......;charset=utf8', 'username', 'password');
$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$instance->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
return $instance;
};
$factory = new StructureFactory( $provider );
След това в друг файл или по-ниско в същия файл:
$something = $factory->create('Something');
$foobar = $factory->create('Foobar');
Самата фабрика трябва да изглежда така:
class StructureFactory
{
protected $provider = null;
protected $connection = null;
public function __construct( callable $provider )
{
$this->provider = $provider;
}
public function create( $name)
{
if ( $this->connection === null )
{
$this->connection = call_user_func( $this->provider );
}
return new $name( $this->connection );
}
}
Този начин ще ви позволи да имате централизирана структура, която гарантира, че връзката се създава само когато е необходимо. Това също би направило процеса на тестване и поддръжка много по-лесен.
Доставчикът в този случай ще бъде намерен някъде на етапа на стартиране. Този подход също ще даде ясно местоположение къде да дефинирате конфигурацията, която използвате за свързване към DB.
Имайте предвид, че това е изключително опростен пример . Може също да се възползвате от гледането на два следните видеоклипа:
Също така силно препоръчвам да прочетете правилен урок относно използването на PDO (има дневник с лоши урок онлайн).