Кто-нибудь знает, что может вызвать эту проблему?
Неустранимая ошибка PHP: невозможно повторно объявить класс
php
class
fatal-error
Джин Юн
источник
источник
if(!class_exists('YourClass')){ include 'YourClass.php'; }
Ответы:
Это означает, что вы уже создали класс.
Например:
Тот второй Фу выдаст ошибку.
источник
У вас есть класс с тем же именем, объявленным более одного раза. Может быть, через несколько включений. При включении других файлов вам нужно использовать что-то вроде
предотвратить множественные включения. Это очень легко сделать, хотя и не всегда очевидно, поскольку между вами может быть длинная цепочка файлов.
источник
Это происходит, когда вы объявляете класс более одного раза на странице. Вы можете исправить это, обернув этот класс оператором if (как показано ниже), или вы можете поместить его в отдельный файл и использовать
require_once()
вместоinclude()
.источник
class_exists('TestClass') === false
или!class_exists('TestClass')
Используйте
include_once();
- при этом ваши коды будут включены только один раз.источник
Это произойдет, если мы будем использовать любой из встроенных классов в библиотеке php. Я использовал имя класса в качестве каталога и получил ту же ошибку. Если вы получили ошибку, сначала убедитесь, что имя класса, которое вы используете, не является одним из встроенных классов.
источник
Эта ошибка также может возникнуть, если вы определяете
__construct
метод более одного раза.источник
Иногда это происходит из-за некоторых ошибок в PHP FastCGI.
Попробуйте перезапустить его. В Ubuntu это:
источник
У меня была такая же проблема при использовании
autoload
следующим образом:а в другом классе было:
Решение состоит в том, чтобы сохранить совместимость пространства имен, в моем примере
namespace testClassNamespace;
в обоих файлах.источник
Просто добавляю;
Эта ошибка также может возникнуть, если вы по ошибке поместили функцию в другую функцию.
источник
PHP 5.3 (я думаю, что и более старые версии), кажется, имеет проблемы с тем же именем в разных случаях. Так что у меня возникла эта проблема, когда у класса был класс Login и интерфейс, в котором он реализовывал LogIn. После того, как я переименовал LogIn в Log_In, проблема была решена.
источник
Просто сделайте одну вещь, когда вы включаете или запрашиваете имя файла, а именно class.login.php. Вы можете включить это так:
Таким образом, это никогда не выдает ошибку.
источник
Эта функция напечатает стек, сообщающий вам, откуда он был вызван:
Вызовите эту функцию вверху файла, который включает ваш класс.
Иногда он будет напечатан только один раз, даже если ваш класс включен два или более раз. Это связано с тем, что PHP фактически анализирует все классы верхнего уровня в файле перед выполнением любого кода и немедленно генерирует фатальную ошибку. Чтобы исправить это, оберните объявление класса в
if(true) { ... }
, которая переместит ваш класс на уровень в области видимости. Тогда вы должны получить две трассировки до фатальных ошибок PHP.Это должно помочь вам найти, где ваш класс включается несколько раз в сложный проект.
источник
Вы использовали Zend Framework? У меня такая же проблема.
Я решил это, закомментировав следующую строку
config/application.ini
:Я надеюсь, что это поможет вам.
источник
Другой возможный виновник - контроль источников и неразрешенные конфликты. SVN может привести к тому, что один и тот же класс появится дважды в файле конфликтующего кода; две его альтернативные версии («моя» и «их»).
источник
Я столкнулся с той же проблемой: более новая версия php не работает одинаково с несколькими включениями одного и того же файла (как библиотеки), поэтому теперь мне нужно изменить все мои включения с помощью include_once.
Или эти трюки могут помочь, если у вас не слишком много классов в вашей библиотеке ...
источник
У меня была та же проблема "PHP Fatal error: Невозможно повторно объявить класс XYZ.php".
У меня есть два каталога, как
controller
иmodel
я по ошибке загрузил XYZ.php в обоих каталогах (поэтому файл с одинаковым именем вызывает проблему).Первое решение:
Найдите в своем проекте и убедитесь, что у вас есть только один класс XYZ.php.
Второе решение:
Добавьте пространство имен в свой класс, чтобы вы могли использовать то же имя класса.
источник
Я столкнулся с той же проблемой. выяснилось, что дело было именем класса. Я справился с этим, изменив название. следовательно, решение проблемы.
источник
На самом деле это означает, что класс уже объявлен на странице, и вы пытаетесь воссоздать его.
Простая техника заключается в следующем.
Я решил проблему с помощью следующего. Надеюсь, это поможет вам немного.
источник