APC, PHP и два класса, которые требуют друг друга
Я управляю приложением PHP, и сейчас мы хотим включить APC. Проблема в том, что у нас есть два класса, которые требуют друг друга. Очень простой пример будет выглядеть так:
in class_a.php
require_once('path/to/class_b.php)';
class a extends something {
//
}
in class_b.php
require_once('path/to/class_a.php');
class b extends something2 {
//
}
Однако, когда мы включаем APC, возникает "[apc-error] Невозможно повторно объявить class_b класса в class_b.php". Хорошо, это потому, что класс уже был загружен с помощью require_once() в class_a.php, поэтому, если какой-то 3-й файл потребует class_b.php, APC выдаст ошибку.
Как решить эту проблему с круговой ссылкой?
2 ответа
Лучший способ решить эту проблему - избавиться от самой циклической зависимости. Я думаю, что это на самом деле квалифицируется как запах кода.
Попробуйте следовать инструкциям в этой статье. Это должно предоставить вам альтернативный подход. Я просто надеюсь, что вы можете _читать_ Java ...
Видимо, есть "функция", которая позволит вам переопределить require_once
звонки и позволяют им быть включены несколько раз. Так как кажется, что вы используете require_once
Похоже, это ваша проблема. Чтобы отключить эту проверку для настройки apc.include_once_override
в php.ini или добавить в
[apc]
apc.include_once_override = 0
Этот параметр имеет известные проблемы с дублирующимися / не найденными классами и т. Д. Проверьте, помогает ли это