我不能在命名空间中自动加载类的父类 . 没有继承子类加载;但是孩子不能自动加载父类 .
文件结构:
/index.php
/lib/router.php
/lib/ns1/parent1.php
/lib/ns1/child1.php
index.php文件:
spl_autoload_extensions(".php");
spl_autoload_register();
require '/lib/router.php';
/lib/router.php
$child1 = new ns1\child1();
/lib/ns1/child1.php
namespace ns1;
class child1 extends parent1 {}
/lib/ns1/parent1.php
namespace ns1;
class parent1 { function __construct() {} }
当我从child1中删除“extends”部分时,一切正常 . 使用“extends”部分我有错误:
致命错误:spl_autoload():无法在/lib/ns1/child1.php中加载类parent1 \ child1
有没有办法如何使用内置的默认spl自动加载功能?非常感谢任何帮助 .
1 回答
我在这个答案中找到了对我有用的解决方案https://stackoverflow.com/a/7987085/5208203
只需将set_include_path()添加到文件index.php:
但是我不确定性能,可能只是解决了我在课堂定义中遇到的另一个失败问题......