У меня есть основной класс, который включает в себя классы компонентов, класс приложения и класс раздела.
Все было хорошо, пока я не попытался устранить рекурсию, которую я нашел в print_r
финала $this
Теперь каждый класс простирается от другого. Только компоненты и класс приложения выходят из основного класса. Раздел продолжается от класса приложения. Что на данный момент кажется нормальным, за исключением одной проблемы:
Когда я вызываю функцию верхнего уровня из унаследованного класса, функция освобождает важный класс от родителя верхнего уровня.
class Framework
{
protected $Data;
function __construct()
{
// include all files...
$this->Data = new MySQLClass;
}
function getItem( $item )
{
$this->Data->table = 'items';
$this->Data->data = array( 'id' => $item );
$this->Data->Query();
}
}
Внутри класса компонента (наследуется от основного) вызывается $this->getItem()
Теперь возвращается
Неустранимая ошибка: вызов неопределенного метода stdClass :: Query ()
Я сделал print_r
из $this->Data
в начале и в конце getItem()
и, конечно же, строки, которые определяют действие класса (Data->table
, Data->data
) переопределяем $this->Data
Первый print_r (нормально в этот момент)
MySQLClass Object ( ... )
Второй print_r (изменено на значения, установленные в функции)
stdClass Object
(
[table] => items
[data] => Array
(
[id] => 1
)
)
Эта функция работает, как и предполагалось, когда вызывается из основного класса, и всегда работала, как и предполагалось, до расширения классов. Я думаю о том, чтобы просто удерживать CTRL + Z и забыть, что когда-либо заметил. Не исправить то, что не сломал правильно? Тем не менее, я хотел бы точно знать, почему это происходит и как правильно вызывать функции верхнего уровня из дочерних классов.
Спасибо,
Задача ещё не решена.
Других решений пока нет …