Класс уже объявлен в PHP и IP.Content?

Я включаю файл с классом GroupManager, который eval'd с IP.content. Я получил ошибку, что класс уже определен. Если я не включаю, я не получаю ошибок. Если я переименую класс, я не получу ошибок (однако я уверен, что этот класс не существует где-либо еще). Я попробовал следующее в случае нескольких включений (я лично использовал include_once...):

if( !class_exists('GroupManager') ) {
    class GroupManager {
    }
}

Я все еще получаю ошибку:

 Cannot redeclare class GroupManager in ... GroupManager.php on line 37

Очевидно, что в моем 4-строчном файле нет строки 37.

Если я удаляю объявление класса и заменяю его эхом, я не получаю никакой ошибки, и это нормально, а значит, класс не существует в этой точке.

if( !class_exists('GroupManager') ) {
    echo "Class does not exist???";
}

Я не уверен, как даже отладить это.

1 ответ

Решение

Я обнаружил проблему, и я должен был ее поймать намного раньше... Другой администратор включил этот файл в ловушку. Хук, очевидно, запускается на каждой странице, хотя каждая страница не требует хука... Таким образом, я не думал проверять хуки.

Если у кого-то возникают странные проблемы с включением IPB, убедитесь, что вы используете grep для include /require. Это избавит вас от многих хлопот.

Что-то вроде этого должно дать вам представление о том, куда включается файл:

grep -r include_name.php .

Это будет проверять все файлы рекурсивно из текущего каталога.

Другие вопросы по тегам