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文件中
最后,自动加载的本质都是 类到文件路径的映射
网友评论