public static function _init() { if (get_called_class() !== 'Model') { if (static::$_pdo == null) { $db = Config::get('db'); static::$_pdo = new PDO($db['dsn'], $db['username'], $db['password']); } } }
protected static function _setupPdo() { // Check the DSN string if (!isset(static::$_dsn)) { $error = "No DSN specified in " . get_called_class(); $error .= ": please specify a 'protected static \$_dsn = ...;'"; throw new Exception($error); } $user = null; $password = null; $options = array(); // If it is MySQL, extract user and password from the DSN $dsn = explode(":", static::$_dsn); if ('mysql' == $dsn[0]) { $parts = explode(";", $dsn[1]); foreach ($parts as $i => $part) { $kv = explode('=', $part); $parts[$kv[0]] = $kv[1]; unset($parts[$i]); } $user = @ZFE_Core::value($parts['user']); $password = @ZFE_Core::value($parts['password']); unset($parts['user']); unset($parts['password']); $_parts = array(); foreach ($parts as $k => $v) { $_parts[] = "{$k}={$v}"; } $dsn[1] = implode(";", $_parts); // Update default fetch mode (maybe put this in the global // function scope) $options[PDO::ATTR_DEFAULT_FETCH_MODE] = PDO::FETCH_ASSOC; } $dsn = implode(":", $dsn); static::$_pdo = new PDO($dsn, $user, $password, $options); }