这个回答可以看下希望对你有帮助
好好理解下“自动加载”。
不是哦,自动加载函数只要当你实例一个对象的时候,发现这个类并不存在,自动加载函数都会运行哦。如果在实例一个对象的时候类已经存在了,这个自动加载函数就不需要工作了,希望可以帮到你。
你在index.php调用的时候 是 route 这类的实例化是在imooc 这个类的方法里面; 属于core这个空间的;实际上全写的话是 new \core\route() 第一次实例化,因为不存在这个类(\core\route); 然后执行spl_autoload_register()这个方法 然后他会去执行imooc 下的load方法,load的class 参数就等于调用 不存在的类名 \core\route
已经有网友提出了,的确是BUG,感谢指正
自己改成 self::$classMap就好! 不用纠结
spl_autoload_register 不是sql_autoload_register。
spl_autoload_register是PHP自带函数,而你根本就没有定义过sql_autoload_register这个方法,你让程序怎么调用呢?
自动加载只有在加载时才有性能开销的,类似于被动触发
的确不太规范,下次课程我会注意的
如果命名空间跟教程完全一样的话,第18行应该是这样的 $route=new \core\lib\route();
把route文件放在 core目录下就不会报错了