Автозагрузчик класса PHP 4
Я работаю в PHP 4 с классами, но нет функции __autoload, поэтому у меня есть проблемы с загрузкой моих классов, потому что они переплетены.
У меня есть класс Корабль и класс Движение. Класс Ship содержит объект Movement, а класс Movement содержит объект Ship.
Поэтому, когда я делаю требуемый Корабль, класс читается и выдает ошибку при достижении нового Движения и наоборот.
Какое-то решение?;)
1 ответ
PHP 4 действительно очень старый и не поддерживается. Лучше всего перейти на PHP 5. Если вы не можете, создайте файл начальной загрузки, который требует всех определений классов (в правильном порядке в случае наследования); убедитесь, что файлы определения класса содержат только определение класса (а не исполняемый код, такой как $obj = new Movement), и укажите этот файл в каждом файле, который вы фактически запускаете в своем приложении.
Дело в том, что определение класса не нужно перед new Movement
оператор, и если этот оператор есть в каком-то методе Ship (даже если он в конструкторе), вы можете безопасно загрузить Ship.php, затем Movement.php, затем запустить код, и он будет работать.
Кроме того, убедитесь, что загружаете все определения классов перед началом сеанса, если вы используете сеансы и сериализуете объекты в нем.