自己写一个composers包【一】

什么是composer

Composer 是一个命令行工具,它的作用就是帮我们的项目管理所依赖的开发包,属于依赖包管理工具

什么是依赖包管理工具

由于程序届的《开源运动》,我们可以在社区找到很多别人提供的工具,也可以向社区贡献我们的代码。

在github还没有兴起的年代,我们是需要到工具的官网下载代码,比如jquery。然后放到我们自己的项目目录里,再在我们的页面中使用。

但是…当一个网站依赖的包越来越多,我们会发现这是一件非常麻烦的事情:

  • 安装新包,代码目录管理等问题
  • 升级依赖包,只能手动替换文件
  • 安装过程发现某个包需要依赖于另一个包,那我们又要开始安装前面的包…
  • ....

哪怕是每个开源包都有自己的官网,也还是需要用户去下载安装。
即使是有一个类似github的大仓库,可以存放所有的项目,实现一站下载。
但不同依赖包之间的关系也还是需要手动维持,包与包之间的关系有可能是相互依赖,也可能是冲突的。

 比如A包需要的PHP版本是小于7的,而B包需要的PHP版本是大于等于7的,那么你安装下来就是有冲突的,可能你在使用之前都没有注意环境的要求,直到遇到各种坑….

于是就有依赖包管理工具的诞生了,如前端使用的npm,java使用的maven,安卓的Gradle等等。在PHP中我们使用的工具叫Composer

当我们需要加载一个新包的时候,我们只需要一条命令,工具就会自动构建安装,并且在安装之前如果检测到环境或者需要依赖其他包,管理工具也会做出相应的处理,比如提示终止、自动安装依赖包。

当我们需要更新包的时候,我们也只需要一条命令,就可以实现工具包的升级,在这过程也依然会检测新版本包需要的环境和依赖等。

所以说,依赖包管理工具 为我们在管理依赖包的工作上带来了极大的便利。

安装Composer

首先我们需要把composer下载到本地,并且执行安装。在这过程中会检测php的的参数设置,如果某些参数未正确设置则会给出警告。
分别运行以下三条命令

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"

局部使用

如果是局部使用,我们到这里就可以了,只需要把下载安装下来的composer.phar复制到你的项目根目录,并且执行php composer.phar就可以看到提示的内容啦~

全局使用

如果想要在任意的项目目录都可以执行使用的话,我们需要把composer包设置一个系统环境变量。

Mac或者linux

把安装包移动到/usr/local/bin/目录

sudo mv composer.phar /usr/local/bin/composer

windows

  • 首先确保你的php已经在环境变量中(也就是在任意目录打开cmd都可以执行php命令)
  • 把composer.phar复制到以上说的php目录中,跟php.exe同个级别
  • 新建一个composer.bat文件,写以下内容并保存,该文件提供composer命令入口。

@php "%~dp0composer.phar" %*

然后就可以在项目目录里打开cmd 并执行composer --version检测看看安装是否成功了!

写一个属于自己的composer包

前面我们已经介绍了依赖包管理工具的便利,许许多多的先辈在开源工具的时候往往都会上传到github或者制作成composer包

 如果传到github,可以解决下载问题,但是与其他包的依赖关系却得不到自动处理,一般用于开源整个项目。

composer包则适合在需要与其他依赖包配合的情况下使用。

 

那么我们下面就来写一个自己的composer包吧,

首先我们创建一个空的目录,并且运行以下命令初始化一个空白的composer包

1.composer init

可以在命令窗口看到有返回提示;

需要输入包名

1.This command will guide you through creating your composer.json config.

2.Package name (<vendor>/<name>) :

我这里写的是yancoo.cn/test,回车

需要输入描述

Description []:

包的描述内容

需要输入作者

Author [宣言 <59419979@qq.com>, n to skip]:

该选项如果有默认值 可以直接回车

需要输入最低稳定版本

Minimum Stability []:

该选项有可选值:stable, RC, beta, alpha, dev 一般填dev

需要输入包类型

Package Type (e.g. library, project, metapackage, composer-plugin) []:

 

可选项在提示中已经有了,我们一般选library填l即可

需要输入开源协议

License []:

根据自己情况填写,我们填Apache

设置包需要依赖的其他环境或者包

1. Define your dependencies.
2. Would you like to define your dependencies (require) interactively [yes]?

如果需要设置依赖环境或者其他包 则输入yes回车,会让你搜索,我们这里给包设置php版本必须大于5.6,所以搜索php。

Enter the version constraint to require (or leave blank to use the latest version):

输入最低要求版本号 >=5.6.0

 

![

](/uploads/article/20190712/5d287e6a72917.png)

如果需要设置多个环境要求,则重复搜索填写即可,如果不需要了,则在Search for a package:不填写内容,直接回车即可

接下来设置依赖包

Would you like to define your dev dependencies (require-dev) interactively [yes]?

我们不需要 直接回车回车。

{
    "name": "yancoo.cn/test",
    "description": "This is a test package,form yancoo.cn,author is siam.",
    "type": "l",
    "require": {
        "php": ">=5.6.0"
    },
    "license": "Apache",
    "authors": [
        {
            "name": "宣言",
            "email": "59419979@qq.com"
        }
    ],
    "minimum-stability": "dev"
}

JSON

Copy

确认信息,yes 回车 初始化完成

Do you confirm generation [yes]? yes
Would you like to install dependencies now [yes]? yes

安装完成,可以看到我们的目录生成了如下结构。

 

 vendor是composer存放包的地址,所有的包都存放在该路径中统一管理,并且composer提供了命名空间自动加载的功能,我们在使用过程中只需要引入composer的统一入口文件即可 

require "vendor/autoload.php";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值