|
|
|
| Добрый день. Прошу оценить подход для выведения объекта типа PDO в глобальность:
class DupexMYSQL {
private static $PDOObj = null;
private function __construct() {}
private function __clone() {}
public static function Connect( PDO & $iPDOObj ) {
if( self::$PDOObj!=null )
throw new Exception( 'The class '.__CLASS__.' is already connected' );
self::$PDOObj = &$iPDOObj;
self::$PDOObj->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
public static function GetObject() {
if( self::$PDOObj==null )
throw new Exception( 'The class '.__CLASS__.' is not connected' );
return self::$PDOObj;
}
}
DupexMYSQL::Connect( new PDO( 'mysql:host=localhost;dbname=45454','545454','545454' ) );
|
| |
|
|
|
|
|
|
|
для: pavluxa09
(31.01.2011 в 23:45)
| | Не корректно
<?php
function get_db()
{
static $db;
if ($db !== null) return $db;
}
require("conf.php");
return new DB(...);
}
// ...
$db = get_db();
|
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Красная_шляпа
(01.02.2011 в 00:38)
| | Нето | |
|
|
|
|
|
|
|
для: pavluxa09
(01.02.2011 в 00:40)
| | Что не то
<?php
// system/functions.php
// можешь назвать в стиле аля джумла-хуюмла getDBO
function get_db() {
static $db;
if (is_null($db)) {
require "path/to/db_conf.php";
$db = new MySQL($db_host, $db_user, $db_pass, $db_name);
}
return $db;
}
//
class SomeClass {
public function someMethod() {
$db = get_db();
// работаем с объектом
}
}
|
никаких глобальных переменных
Либо создавай статичный класс Registry
<?php
class Registry {
private static $storage = array();
public static function set($name, $value) {
self::$storage[$name] = $value;
}
public static function get($name) {
return self::$storage[$name];
}
}
// в любом месте
Registry::set("db", $db);
$db = Registry::get("db");
|
для того чтобы иметь возможность получить доступ к одному объекту ($db) в любом месте программы заводить целый класс нецелесообразно, да и смысл - проще объявить переменную глобальной(тем более таковой она по смыслу и является, меньше стоит обращать внимания на то что пишут на данную тему разные некомпетентные люди, дай Бог если им в жизни приходилось что-нибуь писать, а не править например шаблоны под джумлу) | |
|
|
|