composer项目自身的自动加载

composer项目自身的自动加载
文章图片
140周年

入门阅读
如果你没有使用composer的习惯,那么你可能还没有走进开发者道路的正轨,至于理由在这里不说太多了。一般开发者的成长道路我分为这样两个层次:写业务/写接口->写服务、架构。
当我们需要为一个项目架构时,如果你走在正确的道路上你一定会遇到自动加载的问题。如果说项目中的业务代码是项目的肉体,自动加载就是连接肉体的血管。composer就是解决这个问题的专家,而你也不必手动去写自动加载的代码,而且composer解决的问题远不止于此。由于composer的重要性,主流的php框架已原生支持composer的使用,你是不是也该熟悉熟悉它。
架构项目时我们遇到的自动加载问题分为两类,一个是加载第三方插件库、一个是加载项目自身项目依赖。在这里我已经默认你已经有使用命名空间的习惯、并百度了psr-4的含义。而这篇文章描述的就是如何使用composer解决项目自身的依赖加载问题。


action
百度一个composer安装包,按照相关博文的介绍安装好全局的composer。安装好之后在项目根目录下创建composer.json文件。


composer项目自身的自动加载
文章图片
然后打开cmd,进入项目目录下执行composer update命令,接着你可以注意一下你的项目结构中发生的一点变化。接下来就是这篇文章主要想说的地方,对“autoload”属性的配置。


composer项目自身的自动加载
文章图片
如上所示,“autoload”包括“classmap”、"files"、"psr-4",当然还有“psr-0”已经被废弃不用管了。这三个属性实际上的功能是一样的都是根据传入的数值加载对应的文件,当时是要适应不同的场景来使用不同的属性配置加载。这是本文的重点。
psr-4方式:
在你百度了解psr-4的概念后,填入如下配置


composer项目自身的自动加载
文章图片
这里表示将加载Src目录下的所有符合psr-4规范的php文件,在这里通俗的理解就是除了Src这个目录跟顶级命名规范App的名称不同外,该目录下级所有类名、命名空间、目录名都是一致的。这里的配置就是为了倡导使用psr-4规范的项目架构,如果我们都遵循这个规范我们就不必使用classmap属性了。
files方式:
有时候我们需要直接加载某个php文件,这段代码可能写着全局使用的函数,一般来说我们叫助手函数。这样的文件我们配置在files属性里就可以实现自动加载。
composer项目自身的自动加载
文章图片
classmap方式
这种方式说白了就是不用管是否符合psr规范的情况下加载指定目录下所有php函数的类。具体的细节待测试。
【composer项目自身的自动加载】

composer项目自身的自动加载
文章图片
再执行composer dump-autoload
根据以上三种方式我们就能解决各种架构的的自动加载问题,同时也理解了composer自动加载的正确使用方式,我们也就离架构师更进一步了。

    推荐阅读