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

Этот параметр имеет известные проблемы с дублирующимися / не найденными классами и т. Д. Проверьте, помогает ли это

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