Используя PHP5.3.3, у меня есть 2 класса, которые называются SinglePDO и Manager , оба работают, но мне наверняка понадобятся ваши советы для оптимизации этих неэффективных сценариев кода.Следовательно, у меня есть 2 вопроса, но я предполагаю, что они строго связаны друг с другом:
1) Доступ к SinglePDO методам из Manager объекта восновной код
из основного кода:
$test=new Manager('mydbname', $some_parameters);
$dbfields = $test->getFieldsSummary(false);
В классе Manager , переопределенная функция, если она определена в SinglePDO класс:
public function getFieldsSummary($param)
{
return $this->_dbh->getFieldsSummary($param);
}
Вопрос:
Как избавиться от необходимости переопределять все SinglePDO методы в Manager учебный класс ?(Я пробовал: менеджер классов расширяет SinglePDO и использует: __ call () , но без успеха)
2) Split SinglePDO на 2 класса
Класс SinglePDO включает множество методов.Я хотел бы распаковать эти методы и выбросить их в другой класс, скажем Tool , перегружающий класс SinglePDO методом 1, method_2 и т. Д. *
Вопрос:
Как этого добиться в предыдущем контексте (еще с классом менеджера)
Вот класс SinglePDO , типичный, нос дополнительными методами.
class SinglePDO extends PDO {
private static $_dsn = 'mysql:host=127.0.0.1;dbname=foobar';
private static $_dbuser= 'dbuser' ;
private static $_dbpwd = 'dbpwd' ;
private static $_lock = true;
public function __construct( $dsn , $uname, $upass ) {
if( self::$lock ) {
trigger_error( 'Forbidden Class usage (singleton)');
}
parent::__construct( $dsn , $uname, $upass );
}
public static function getInstance($dbh) {
if( self::$instance == NULL ){
self::$lock= FALSE;
self::$instance = new SinglePDO(self::$_dsn, self::$_dbuser, self::$_dbpwd);
self::$lock = TRUE;
}
return self::$instance;
}
/* lots of added methods that I'd like to drop into a Tool class */
public function my_method_1($param) {
// do this and that
}
} /* end of the uggly class */
EDIT :
В btwn я нашел эту очень интересную ссылку