PHP 的自动加载,之前常用的__autoload和spl_autoload_register,不过最近发现使用composer也可以帮助实现自动加载,也挺好用的,记录一下。
首先需要安装composer
然后在项目根目录创建library和Model目录和一个composer.json文件,在里面输入如下内容:
注:上面内容的library和Model即为自动加载的目录,我们要自动加载的类文件就放在这些目录下。
然后我们在libaray和Model目录下创建两个演示类文件,创建后的目录结构:
User.php的内容:
Hello.php的内容:
index.php里面的内容:
可以看出,我们在Hello类的index方法里调用了User类的info方法,然后我们在index.php里有调用了Hello类的index方法,这时候我们去访问index.php肯定是要报错的,因为我们在调用前并没有引入对应的文件,PHP也不会自动加载。
这时候我们可以打开终端,切换到项目目录下,运行命令:
运行成功后会看到,在项目下生成可一个vendor目录,里面有不少文件,这时候我们只需要把生成的vendor/autoload.php引入到我们的index.php中就行了,index.php的内容修改为:
然后我们再访问index.php,就正常了,借助composer,php文件实现了自动化加载,至于为什么,看看vendor目录下composer帮我们生成的文件就明白了。
目前,越来越多的php框架使用了namesace,用户在使用框架的过程中也未进行直接引入对应的文件,这会给人一种错觉:使用namespace后php会自动加载文件。其实这是错的,框架其实自己实现了一套自动加载机制,用的人没注意而已,一般是通过namespace算出文件的存储路径,然后实例化的时候,会触spl_autoload_register自动加载函数将文件引入。namespace和自动加载是两码事。
举报/反馈

友儿屋

2获赞 48粉丝
日常分享。
关注
0
0
收藏
分享