PHP Singleton PDO

medinnogsseele

New Member
from http://www.php.net/manual/en/class.pdo.php\[code\]###### config.ini ######db_driver=mysqldb_user=rootdb_password=924892xp[dsn]host=localhostport=3306dbname=localhost[db_options]PDO::MYSQL_ATTR_INIT_COMMAND=set names utf8[db_attributes]ATTR_ERRMODE=ERRMODE_EXCEPTION############<?php class Database { private static $link = null ; private static function getLink ( ) { if ( self :: $link ) { return self :: $link ; } $ini = _BASE_DIR . "config.ini" ; $parse = parse_ini_file ( $ini , true ) ; $driver = $parse [ "db_driver" ] ; $dsn = "${driver}:" ; $user = $parse [ "db_user" ] ; $password = $parse [ "db_password" ] ; $options = $parse [ "db_options" ] ; $attributes = $parse [ "db_attributes" ] ; foreach ( $parse [ "dsn" ] as $k => $v ) { $dsn .= "${k}=${v};" ; } self :: $link = new PDO ( $dsn, $user, $password, $options ) ; foreach ( $attributes as $k => $v ) { self :: $link -> setAttribute ( constant ( "PDO::{$k}" ) , constant ( "PDO::{$v}" ) ) ; } return self :: $link ; } public static function __callStatic ( $name, $args ) { $callback = array ( self :: getLink ( ), $name ) ; return call_user_func_array ( $callback , $args ) ; }} ?><?php // examples$stmt = Database :: prepare ( "SELECT 'something' ;" ) ;$stmt -> execute ( ) ;var_dump ( $stmt -> fetchAll ( ) ) ;$stmt -> closeCursor ( ) ;?>\[/code\]My questions are:What is singleton?What does static mean/do?What is public static function __callStatic ( used for?And how can I make it, that PDO only connects to the database when needed? Such as a query or escaping? So if the class/object is unused then it doesn't connect.
 
Back
Top