AKoval
Guest
PHP и иерархия классов
Уважаемые профессионалы!
Кто-нибудь может подсказать, где собака зарыта?
Есть иерархия классов следующего вида:
class baseDB(){
function baseDB($objectID){
. . . .
$this->Refresh();
}
function Refresh(){
. . . .
}
}
class Client extends baseDB(){
function Client($clientID){
. . . .
parent::baseDB($clientID);
}
function Refresh(){
. . . .
parent::Refresh();
. . . .
}
}
class pClient extends Client(){
function pClient($pClientID){
. . . .
parent::Client($pClientID);
. . . .
}
function Refresh(){
. . . .
parent::Refresh();
. . . .
}
}
class cClient extends Client(){
function cClient($cClientID){
. . . .
parent::Client($cClientID);
}
function Refresh(){
. . . .
parent::Refresh();
. . . .
}
}
$obj = new pClient('000000001');
или
$obj = new cClient('000000002');
Проблема: когда я создаю объект класса pClient все нормально, когда же созжаю объект класса cClient почему-то в конструкторе класса baseDB на вызове $this->Refresh() происходит что-то непонятное. Такое впечатление, что в этом месте работа прекращается и управление передается следующей за new команде без всяких сообщений и ошибок. Хотя я повставлял после каждого обращения к Refresh отладочные печати, никаких результатов не вижу.
Как только в классе baseDB комментирую $this->Refresh() - все отрабатывает нормально. Точно так же все работает, если заменяю только в этом классе Refresh на fresh например. Я конечно не считаю себя большим специалистом в ООП, но это для меня не понятно.
Естественно, что в методах Refresh классов-потомков что-то делается дополнительно, и возможно, что именно в этом причина всего, но как ее найти?
Может кто-нибудь хотя бы подсказать, в чем дело и с какого конца это все разбирать?
Спасибо.
Уважаемые профессионалы!
Кто-нибудь может подсказать, где собака зарыта?
Есть иерархия классов следующего вида:
class baseDB(){
function baseDB($objectID){
. . . .
$this->Refresh();
}
function Refresh(){
. . . .
}
}
class Client extends baseDB(){
function Client($clientID){
. . . .
parent::baseDB($clientID);
}
function Refresh(){
. . . .
parent::Refresh();
. . . .
}
}
class pClient extends Client(){
function pClient($pClientID){
. . . .
parent::Client($pClientID);
. . . .
}
function Refresh(){
. . . .
parent::Refresh();
. . . .
}
}
class cClient extends Client(){
function cClient($cClientID){
. . . .
parent::Client($cClientID);
}
function Refresh(){
. . . .
parent::Refresh();
. . . .
}
}
$obj = new pClient('000000001');
или
$obj = new cClient('000000002');
Проблема: когда я создаю объект класса pClient все нормально, когда же созжаю объект класса cClient почему-то в конструкторе класса baseDB на вызове $this->Refresh() происходит что-то непонятное. Такое впечатление, что в этом месте работа прекращается и управление передается следующей за new команде без всяких сообщений и ошибок. Хотя я повставлял после каждого обращения к Refresh отладочные печати, никаких результатов не вижу.
Как только в классе baseDB комментирую $this->Refresh() - все отрабатывает нормально. Точно так же все работает, если заменяю только в этом классе Refresh на fresh например. Я конечно не считаю себя большим специалистом в ООП, но это для меня не понятно.
Естественно, что в методах Refresh классов-потомков что-то делается дополнительно, и возможно, что именно в этом причина всего, но как ее найти?
Может кто-нибудь хотя бы подсказать, в чем дело и с какого конца это все разбирать?
Спасибо.