У меня есть файл-обработчик для POST/GET. Его я открываю при AJAX запросе (прямо указываю в fetch). Когда формирую в обработчике ответ в виде JSON пытаюсь вставить в него данные из наследуемого с родительского класса свойства. Например
обработчик
include $_SERVER['DOCUMENT_ROOT'].'/model.php';
class Handler extends Model {
...
foreach($stmt as $row) {
$t=[];
$t['link'] = $row['link'];
$t['region'] = $row['region'];
$t['parentProp'] = $this->parentProp; // вот оно
$data[] = $t;
}
echo json_encode($data);
}
Родительский класс выглядит так
class Model {
public $parentProp= array('one','two');
}
Все работало до тех пор, пока я решил не изменить parentProp, добавив в него другие значения. Но ничего не поменялось, он возвращал по-прежнему array('one','two'); Тогда я создал новое свойство и обратился к нему, но получил на выходе null будто его не существует. Я также выводил свойство минуя цикл напрямую echo json_encode($this->parentProp;) Всё тоже самое. Причем когда я выводил свойство чисто средствами php все было правильно. проблему вижу именно в ajax, но там ничего особенного :
let f = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify(data),
});
Я почистил кэш браузера, в body fetch указывал no-cache,no-store но ничего не работало.
Суть в том, что не получается обратиться к свойствам родительского класса (именно при ajax), я получаю ошибку что такого свойства нет, хотя я инклудил родителя и подключение к БД (которое там прописано в конструкторе) происходило. В памяти, как я понимаю, лежит только $parentProp и даже если я его удаляю в Model, обработчик по $this->parentProp все равно возвращает первоначальные значения (как это возможно??).
Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.2.12