Наследование в PHP

sveta75

Задача состоит в следующем:
Есть class Patabase extends NLPGSQLDatabase, иногда хочется чтобы было class Patabase extends NLMYSQLDatabase
Можно ли как то в конструкторе Patabase выбирать от какого класса будет идти наследование? Т.е. существует ли способ указать, что такой то класс происходит от такого то класса без использования конструкции extends ?
Интересуют решения под PHP 4.3.x

sveta75

Хм... оказывается можно


class Patabase {
function Patabase($dbType) {
switch($dbType) {
case 'mysql':
$this = new NLMYSQLDatabase;
break;
case 'pgsql':
$this = new NLPGSQLDatabase;
break;
default:
FatalError('You must select DB type');
break;
}
}
}

sveta75

фигня вышла, не работает


class Parent {
function Parent {
echo 'I\'m is ';
}
function ShowParent {
echo 'a parent';
}
}
class Son {
function Son {
$this = new Parent;
}
function ShowSon {
echo ' and a son';
}
}
$x = new Son;
$x->ShowParent;
$x->ShowSon;


вопрос из первого сообщения все еще в силе

a10063

может проще член-объект создавать?
имхо, все-таки описанная ситуация не совсем согласуется с понятием наследования

artimon

Опять ты странного хочешь…

puare

Решение вроде как архитектурно не очень верно... Попробуй паттерн Factory применить для такой задачи, это, ИМХО, более верно будет

sveta75

То что я в итоге сделал, начальник обозвал паттерном Adapter
Оставить комментарий
Имя или ник:
Комментарий: