У меня есть 5 скриптов, позвольте'ы сказать: database.php, parent.php, child1.php, child2.php и somescript.php
класс parent.php выглядит это так:
include 'database.php';
class Parent {
public $db;
function __construct() {
$this->db = new Database();
}
}
child1 и ребенка2 классов выглядит так:
include 'parent.php';
class Child1 extends Parent {
function __construct() {
parent::__construct();
}
function useDb() {
$this->db->some_db_operation();
}
}
Проблема
Когда я стараюсь включать как child1 и ребенка2 в somescript.php он возвращает следующее сообщение об ошибке:
не может объявить класс базы данных, так как имя уже используется в database.php на линии 4 (это линия, которая содержит слова 'база данных класса')
Но если я включаю только один файл (child1, так или ребенка2), он отлично работает.
Как мне исправить это?
вы хотите использовать include_once() или им require_once(). Другим вариантом было бы создать дополнительный файл со всеми вашими классе включает в правильном порядке, так что они Дон'т необходимость вызова включает в себя:
"и классы.на PHP"и
include 'database.php';
include 'parent.php';
include 'child1.php';
include 'child2.php';
Тогда вам просто необходимо:
require_once('classes.php');
попробуйте использовать include_once ' ор
им require_onceвместо
включатьили
требуют`
Другой вариант им require_once или include_once использовать автозагрузку. http://php.net/manual/en/language.oop5.autoload.php
Я раньше и исправить эту проблему, Просто убедитесь, что :
Моя проблема (до) : Я класс : базовый, маршрутизатор, разрешения и визуализации Ядро включает'ы класса маршрутизатора, то маршрутизатор вызывает классу разрешения, то маршрутизатор __самоликвидации вызывает класс render и ошибке "не может объявить класс, потому что имя уже используется" и появился.
Решение : Я добавил самоликвидации по классу разрешения, и самоликвидации был пуст, и это'с фиксированным...