美文网首页
composer自动加载

composer自动加载

作者: Newzer | 来源:发表于2022-03-01 15:18 被阅读0次

  1.首先创建一个空项目,执行composer init生成一个composer.json文件,然后composer.json的同级目录下建src目录,编写如下内容:

然后将自己写的功能类加入到 php 的自动加载器中,composer.json的内容如下:

这样就编写了一个符合psr-4规范的包

在本地引用我们刚刚编写的包

2.另建一个新项目如composer-dis,然后将我们之前的项目如 chenjuan 整个文件夹拷贝到 vendor 目录下(所有的三方类库都应放到该目录下,我习惯于将自定义的类库也放到这里,依据个人习惯放置即可),然后修改新项目的composer.json 文件 文件内容如下:

(注意:如果是composer 的 packgist 的包则直接在 require 模块引入就行,在执行完 composer update 会自动将依赖包中的相关类添加到autoload_psr4文件中,但是因为是引入本地文件,则需要在 autoload 模块声明用于添加到 PHP 的自动加载器中,最好就直接用 psr-4 的规范,后面的 value 最好直接写相对路径不容易出错)

新项目测试之前的 composer 包示例:

补充:

autoload 模块还可以用以下方式来加载自定义类库

"psr-0":  {"Chenjuan\\": "./vendor/chenjuan/src"} 

"classmap":  ["./vendor/chenjuan/src/Chenjuan"] 

"files": ["./vendor/chenjuan/src/Chenjuan/Index.php"]

psr-0 :这里的目录只需要写到 在实例化类之前的目录即可,因为映射目录的时候会加上实例化类的那一部分

    如 $greeting = new Chenjuan\Index(), 所以只需写到src的位置

    最后的映射数组在autoload_namespaces文件中

psr-4:添加某个目录下的所有类到自动加载器中,可以有多个目录,文件目录必须与命名空间一致,最后的映射数组在autoload_psr4 文件中

classmap:添加某个目录下的所有类到自动加载器中,可以有多个目录,最后的映射数组在autoload_classmap文件中

files:添加具体文件到自动加载器,可以有多个具体文件,最后的映射数组在autoload_files文件中

最后,自动加载的本质都是 类到文件路径的映射

相关文章

网友评论

      本文标题:composer自动加载

      本文链接:https://www.haomeiwen.com/subject/ujwdrrtx.html