On Oct 1, 1:49 pm, macca <ptmcna...@googlemail.comwrote:
Quote:
Hi, quite new to design patterns so please humour me.
>
I'm having a little trouble figuring out how to use the singleton
pattern to create a database PDO object that I can then refer to in my
script.
>
I created the instance with this:
>
class PDO_Singleton{
private static $_singleton;
private $_connection;
>
private function __construct()
{
$this->_connection = new PDO('mysql:host=localhost;dbname=pm5494',
'root', 'password');
}
>
public static function getInstance()
{
if (is_null (self::$_singleton)){
self::$_singleton = new PDO_Singleton;
}
return self::$_singleton;
}
>
}
>
$dbh = PDO_Singleton::getInstance();
>
OK, So now I have my instance and i want to use my PDO object, if try
this:
>
$statemant = $dbh->_connection->prepare("select * from pans");
>
Which obviously gives me the message "Cannot access private property
PDO_Singleton::$_connection" because $_connection is declared private.
>
So how am I supposed to use my PDO object without having to declare it
public or access it from within my PDO_Singleton class?
>
Help appreciated,
>
Regards,
>
Paul
Add a public method to the class that looks like this:
public function prepare($stmt) {
return $this->_connection->prepare($stmt);
}
Then call it like this:
$dbh = PDO_Singleton::getInstance();
$statemant = $dbh->prepare("select * from pans");
If you want to make your instance variables private you'll need some
public method to access and manipulate them from the outside.