проблема в вашем require_once
заявлении
вы используете относительный адрес, который кажется правильным, но на самом деле он относится к файлу, с которым сервер связался, а не к дочернему классу
при условии
корень / index.php
Require_once "Child.php"
и при условии
корень / классы / Child.php
Require_once "Parent.php"
в этом случае он будет искать родителя в папке root
, а не в папке classes
у вас есть 2 варианта 1 используйте переменную __DIR__
т.е.
Require_once __DIR__ . "/Parent.php"
это заставит пользователя использовать папку, в которой находится файл, а не папку, в которой находится исходный вызов
другой вариант - использовать автозагрузчик
который выглядел бы так
<?php
spl_autoload_register(function ($class) {
$fname = __DIR__ . '/classes/' . $class . '.php';
if(file_exists($fname))
{
include_once($fname);
}
})
?>
это затем даст команду php искать любые неизвестные классы в папке классов и загружать их в систему