php composer 包依赖管理工具 - 自动加载 (二)

这次来了解一下配置文件 composer.json

官方文档

版本符号表示意思(就是>=,~,^这些)

用命令创建一个

{
    "name": "codfrm/test",  //包名
    "description": "描述",    //包描述
    "license": "MIT",//开源协议,例如:MIT,Apache,BSD等
    "authors": [//作者的信息
        {
            "name": "CodFrm",//自然是名字了
            "email": "code.farmer@qq.com"//作者邮箱
        }
    ],
    "require": {            //引入的包
        "php": ">=7.1.3",   //意思是php的版本>=7.1.3
        "ehime/hello-world": "^1.0"//引入包ehime/hello-world,版本>=1.0 并且 版本<2.0
    },
    "require-dev": {//与require不同的是,这里一般是存放开发测试的包,并不是一定需要的包
        "phpunit/phpunit": "^7.1"
    }
}

还有一些其他的参数,例如经常会用到的autoload,这是一个自动加载的参数

index.php

<?php
require_once __DIR__."/vendor/autoload.php";
$a=new HuanL\Hello();
$a->print("world");

src/huanl/hello.php

<?php
namespace HuanL;

class Hello {
    function print($var = null)
    {
        echo "hello $var";
    }
}

修改composer.json文件

{
    "name": "farmer/test",
    "description": "描述",
    "require": {
        "php": ">=7.1.3",
        "ehime/hello-world": "^1.0"
    },
    "license": "MIT",
    "authors": [
        {
            "name": "CodFrm",
            "email": "code.farmer@qq.com"
        }
    ],
    "require-dev": {
        "phpunit/phpunit": "^7.1"
    },
    "autoload": {   //加入了自动加载
        "psr-4": {  //psr-4规则
            "HuanL\\":"src/HuanL/"//理解意思大概就是HuanL这个命名空间指向src/HuanL/这个目录
        }        
    }
}

然后要执行一次下面这个命令,使刚刚的自动加载生效(感觉可能是像缓存一样的东西,前面一直疑惑配置了为什么不生效,以为是自己配置的问题),vendor\composer\autoload_static.php应该是修改这个文件的,将配置缓存进去

$ composer dump-autoload
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据