我在 PHP 4 中使用类,但没有 __autoload 函数,所以我在加载我的类时遇到问题,因为它们是交织在一起的。
我有一个类船和一个类运动。Ship 类包含一个 Movement 对象,Movement 类包含一个 Ship 对象。
因此,当我执行 require Ship 时,会读取该类并在到达新运动时抛出错误,反之亦然。
一些解决方案?;)
PHP 4 非常非常老旧且不受支持。最好的选择是迁移到 PHP 5。如果不能,请创建一个引导文件,该文件需要所有类定义(在继承的情况下以正确的顺序);确保类定义文件只包含类定义(而不是像 $obj = new Movement 这样的可执行代码),并且在您在应用程序中实际运行的每个文件中都需要此文件。
关键是,Motion 的类定义在语句之前不需要new Movement
,如果这个语句在某个 Ship 的方法中(即使在构造函数中),你可以安全地加载 Ship.php,然后是 Movement.php,然后运行代码,它将起作用。
此外,如果您正在使用会话并序列化其中的对象,请确保在启动会话之前加载所有类定义。