PHP Неустранимая ошибка: не удается переопределить функцию

У меня есть функция A в файле B.inc

line 2:  function A() {

           ...

line 10: }

В журнале apache:

PHP Неустранимая ошибка: не удается переопределить A() (ранее объявленный в B.inc: 2) в B в строке 10

Ответ 1

Я полагаю, вы используете require "B.inc" в нескольких частях? Можете ли вы попробовать использовать require_once во всех этих экземплярах вместо этого?

Кажется, что ваш B.inc анализируется дважды.

Ответ 2

У меня была аналогичная проблема, когда функция, полностью содержащаяся в публичной функции внутри класса, сообщалась как обновленная. Я уменьшил проблему до

class B {
  function __construct() {
   function A() {
   }
  }
 }
 $b1 = new B();
 $b2 = new B();

Неустранимая ошибка: не удается выполнить повторную запись. A() создается при попытке создать $b2.

Исходный автор кода защитил объявление класса от переопределения с if (! class_exists ('B')), но это не защищает внутреннюю функцию A() от переопределения, если мы попытаемся создать более одного экземпляр класса.

Примечание. Это, вероятно, не та же проблема, что и выше, но она очень похожа на некоторые из ответов в PHP Неустранимая ошибка: нельзя обновить класс

Ответ 3

Вы уже объявили A() где-то еще?

Или, вы звоните B.inc дважды в случае аварии?

попробуйте использовать: require_once ( "B.inc" );

Ответ 4

Похоже, вы можете включить B.inc больше одного раза.

// Rather than
include("B.inc");

// Do:
require_once("B.inc");

require_once() позволяет вам вызывать файл везде, где это необходимо, но на самом деле анализирует его, если он еще не разбирался.

Ответ 5

убедитесь, что вы require_once ( 'B.inc' ) или `include_once ('B.inc') '

Ответ 6

Эти люди в порядке, но вместо этого используют функции php5, autoload и вместо статических методов. Методы, связанные с объектами, в основном лучше, но использование статических методов позволяет повторно использовать имя метода во многих классах. вы можете вызвать статический метод, подобный этому

ClassName::myFunction();