2013-05-30 8 views
0

Я работаю в PHP 4 с классами, но функции __autoload нет, поэтому у меня проблемы с загрузкой моих классов, потому что они переплетаются.PHP 4 class autoloader

У меня есть класс Корабль и класс Движение. Корабль класса содержит объект Movement, а класс Movement содержит объект Ship.

Итак, когда я требую Ship, класс читается и выдает ошибку при достижении нового Movement и наоборот.

Некоторое решение? ;)

ответ

0

PHP 4 действительно, действительно старый и не поддерживается. Лучшим вариантом является переход на PHP 5. Если вы не можете создать файл начальной загрузки, для которого требуются все определения классов (в правильном порядке в случае наследования); убедитесь, что файлы определения класса содержат только определение класса (а не исполняемый код, например $ obj = new Movement) и требуют этого файла в каждом файле, который вы фактически используете в своем приложении.

Дело в том, что определение класса Movement не требуется перед оператором new Movement, и если этот оператор находится в некотором методе Ship (даже если он есть в конструкторе), вы можете безопасно загрузить Ship.php, затем Movement .php, затем запустите код, и он будет работать.

Кроме того, перед началом сеанса обязательно загрузите все определения классов, если вы используете сеансы и сериализуете в нем объекты.