使用composer构建自己的项目

平时写项目我们都是使用别人的框架,也没有去研究文件的加载过程,这里从头分析下composer构建自动加载的过程及相关问题

流程:

1:安装composer并创建新项目,这里只简单创建了App 文件夹
使用composer构建自己的项目_第1张图片
2:配置composer.json 文件,需要使用composer 管理项目必须要有composer.json文件,这里只需要注意autoload 模块的 匹配,简单配置如下

{
    "name": "composer test",
    "type": "project",
    "description": "test",

    //需要的依赖
    "require": {
        "php": ">=7.0.0"
    },

    //自动加载规则
    "autoload": {
        "psr-4": {
            //命名空间: 文件路径
            "App\\": "App/"
        }
    }
}

3:运行命令: composer install,成功后会生成一个vendor 文件夹,里面有自动加载相关的文件
使用composer构建自己的项目_第2张图片
4:使用
a>: 在App 文件夹 创建Test 类,这个命名空间必须按照上面composer.json 约定的路径方式命名

b>: 在index.php 加载使用文件

test();

相关问题:

1:项目中新增文件夹,添加的类库为什么不能引用?

a:如果新的文件夹在已有的文件夹内,且符合psr-4的规范 是可以直接引用的,但是如果文件夹新增在最外层或者命名空间不是psr-4规范 则需要在composer.json 里对应配置自动加载规则后运行composer dump-autoload 命令更新加载文件加载匹配文件,如下图类 T 是可以直接使用的
使用composer构建自己的项目_第3张图片
2:我在 vendor 内新建文件夹创建的类 为什么不能引用?

A>: vendor 内的文夹默认为composer 自动引用的依赖库文件夹,一般是不能手动添加的,如果一定要手动添加,那在添加后需要手动修改 autoload_static.php(php>=5.6) 或者 autoload_psr4.php (有些框架会自己实现自动加载需要查看具体实现)文件里自动加载的匹配路径,这里一般是composer requer 后自动更新的,手动操作后下次composer 自动更新配置后会被覆盖
下面是tp某框架的自动加载,全程不会加载autoload_static.php
使用composer构建自己的项目_第4张图片

3:composer 构建流程

a:按照json 配置的 require配置 加载文件的依赖库,加载依赖时也会先加载对应的compose.json 文件 去检测它的require 依赖,直到把所需的依赖全部下载下来(在vendor内)

b:按照json autoload 配置生成(或者更新) autoload 相关配置文件

c: 项目引入autoload 文件实现自动加载

PS:composer常用命令

composer install;  #安装包,根据composer.json
composer update;   #更新包,升级composer.json的所有代码库(如果能升级的话)
composer search 关键字; #搜索包,搜索composer可用的包
composer require 包名称; #引入包,会在composer.json新增一条包配置,并下载该代码包 
composer remove 包名称; #删除包
composer dump-autoload;#生成当前命名空间与类库文件路径的一个映射,运行时加载会直接读取这个映射,加快文件的加载速度。

最后:如何构建自动composer 依赖库?
请看:构建自己的composer依赖包

你可能感兴趣的:(composer,PHP,composer构建项目,composer加载,composer使用,composer)