I am connecting to mysql via PDO:
$instance = new PDO("mysql:host=$server;dbname=$database;", $username, $password);
I want to:
- create and maintain a single/reusable connection per database
- make sure that the connection has been set up properly
This is discussed on stackoverflow, the top answer seems like a good solution: How to properly set up a PDO connection
I've tried to use this code to create a connection to the database, but when I load the page there are no errors but a white page (it doesn't work):
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 );
}
}
$server = 'localhost';
$username = 'dbuser';
$password = 'password';
$database = 'mydb';
$provider = function(){
$instance = new PDO("mysql:host=$server;dbname=$database;", $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');
The final line of code breaks the php script, why is this? How do I correctly implement the solution from StackOverflow?