Не удается переопределить classX в classX.php?
Я искал похожие вопросы, но не нашел ни одного. Обычная проблема состоит в том, что определенный класс не может быть повторно объявлен в другом классе, и поэтому решение состоит в том, чтобы использовать "require_once" или "include_once". Но моя ошибка не позволяет самому классу переопределиться!
Позвольте мне объяснить, у меня есть два класса, Design
а также DesignSide
, У меня есть куча файлов PHP, где я использую эти два класса.
- build_design.php,
- browse_designs.php, который дает вызов AJAX для - load_designs.php
У каждого дизайна может быть несколько сторон, поэтому все 3 файла выше содержат строку:
require_once("Design.php");
а также Design.php
имеет строку:
require_once("DesignSide.php");
Но на build_design.php моя ошибка такова:
Fatal error: Cannot redeclare class DesignSide in ../classes/DesignSide.php on line 4
то есть он возражает против того, чтобы DesignSide объявила себя! Это первые строки DesignSide:
<?php
class DesignSide
{
private $id;
private $data;
private $designtag;
private $side;
В чем дело?
2 ответа
... или вы можете использовать одно из волшебства PHP __autoload
в ваших сценариях, чтобы предотвратить такое поведение.
Сохраните этот файл как config.php
function __autoload( $class ) {
if( file_exists( $class . '.php' ) ) {
require_once $class . '.php';
} else {
die( 'No such file.' );
}
}
Теперь включить / требовать config.php
во всех ваших файлах, и вам не нужно включать / требовать файлы классов.
Единственное предостережение в том, что имена классов должны соответствовать имени файла.
Кто-то просто удалил свой ответ - но я просто хотел отметить его как правильный ответ. Оказалось, что на самом деле у меня был "DesignSide.php" дважды, в build_design.php
, Спасибо! Виноват!
Поэтому правильным ответом было включить класс DesignSide в Design и включить класс Design только в три php-файла.