经常看到各种开源库推荐使用 composer 安装代码,却总是看不懂怎么用composer,
这几天静下心来学习了composer的使用,发现这可真是一个好东西,先贴上一个讲的很棒的视频教程:
视频讲的很详细,我这里主要整理一下 使用环境的搭建 , 基本用法 , 发布方法
一.环境搭建
需要用到的软件:(为了方便贴的百度盘, 挂了的话也可百度搜索,获取最新版本, 都是免费的)
1.git客户端 ( 密码:2dve )
2.php集成环境(资源为php工具箱 , xmapp ,wamp,phpStudy 皆可) ( 密码: 29bh)
3.composer安装包 ( 密码: kyd1)
4.sourcetree( git 图形界面应用) ( 密码: rvfn)
安装就是 点同意协议, 下一步, 下一步....完成.
注意按排序安装,
composer 需要选择php.exe,对应php环境所使用的php.exe;
安装php工具箱后, composer 安装时选择如下, 选择php环境所用的php版本下的php.exe即可
composer 在安装第三方库时也要用到git,所以也要优先安装git.
sourcetree 需要用到git,可用软件内置的git,若先安装了git 会自动使用系统git.
sourcetree 安装后首次运行需要登录或注册账号才可使用,可以通过 跳过登录 ( 点击查看教程 ) 进入.
二.基本使用:
本文代码托管库使用的是国内的 码云.
1.在代码托管库中新建项目,使用托管库便于未来发布自己的项目供他人使用
2.用 sourcetree 克隆项目到本地
本文这里克隆到了本地的php环境根目录下,便于直接运行项目,至此完成了项目的线上及线下部署
3.为项目构建composer管理:
首先打开cmd窗口 ( win+R 输入cmd 然后回车 );
输入项目所在盘符,如 d: 然后回车,输入 'cd 项目的完整路径', 如: cd D:\myphp_www\PHPTutorial\WWW\test ,按下回车,进入项目目录
接着输入 composer init ,回车 , 开始为项目构建 composer 配置 ,按引导一步步填写即可:
详细的命令用法可参考 composer中文手册
完成后项目中会出现一个json文件,就是刚才cmd填写的配置文件,第三方包可在search for a packet选项中填写,也可稍后用require命令引入
在cmd中 执行install 完成该项目 composer 的安装 :
安装完成后 ,可发现项目中多了个 vendor 文件夹,该文件夹就是刚刚安装的composer, 对该项目的所有依赖进行管理
引用库时大多的库存放在github上, 因为网络原因经常会下载缓慢甚至下载失败,解决方法:使用* 或 使用 国内镜像.
本文使用国内镜像, 首先进行镜像配置
require 引入第三方库:( 库可在 packagist.org 网站上搜索获取 packagist.org相当于一个应用商店列表 , 库作者将自己的库发布到此网站后, composer便可进行库的引入),
如 引入一个验证码库
用 require 命令选择 包和版本号后 即可自动建立依赖并下载库,
安装完成后可以看到项目的 vendor 文件夹中就有了第三方库
至此项目可以直接使用该第三方库了
库的用法作者会给出,按照说明使用即可
composer提供了自动加载机制, 引入vendor/autoload.php即可使用自动加载
使用结果:
当前项目使用自动加载需要在 composer.json 配置命名空间方可使用 配置方法参考
修改 composer.json 后,输入 composer dump 即可刷新配置并应用
三.发布自己的库
只要对自己的项目进行了composer 依赖配置 ( 即项目中包含配置好的 composer.json文件 ) ,即可将自己的项目发布到 packagist.org 供他人使用!
1.注册或登录账户
2.点击submit
3.输入自己项目的线上仓库地址
4.检测通过后 点击submit 即成功发布,至此 他人就可使用我们的项目了!
5.如果我们的项目有了push更新,则需要到packagist手动更新,他人才能用到最新的版本
为避免频繁手动更新,我们需要在托管库中设置webhook,
使得项目的push更新能自动触发packagist更新 到对项目最新版本的引用
以码云为例:
点击提交,至此完成了项目在packagist.org上的自动更新
url如何填写? 查看说明
小结
composer 解决了 php 项目的依赖管理 ( 仅使用一个json配置文件 ) ,方便了项目的灵活组建,即使不使用第三库,其基础的自动加载功能也十分好用.
利用 composer 发布自己的项目,可以方便他人的使用,带来更多的使用反馈,同时也为未来的项目提供便利.
希望大家都能轻松的学会使用 composer ! 如有疑问欢迎留言!