首先支持下黄老师的视频网站转型
这篇composer的学习笔记也是根据他的视频教程写的,一共十集,讲解的很简单
感兴趣的同志们可以上他视频网站购买视频,网站地址放在文末
我的php博客:http://www.imotaku.net/
composer作用
1、自动安装所需要的模块,自动加载
2、管理项目,发布到packeglist网上上去(packgist是composer默认的加载组件地址)
安装
windows下
进入 https://getcomposer.org/ 找到Composer-Setup.exe 下载安装,安装到php.exe文件夹下
安装到phpstrom
进入 https://getcomposer.org/ 找到composer.phar 下载
进入phpstrom->file->setting->command Line Tool Support
点击加号,选择composer。visibility选择global,接着输入composer.phar路径确认
安装完毕
开始使用composer加载我们需要的第三方组件
通过建立composer.json文件告诉composer我们需要依赖哪个文件
该文件可通过命令行创建:composer init
json文件格式如下:
{
"name": "Administrator/composer-test",
"repositories":[
{
"type":"vcs",
"url":"在github上要加载的模块的git地址"
},
{
"type":"pera",
"url":"xxx"
},
{
"type":"composer",
"url":"xxx"
}
],
"require": {
"zendframework/zendframework":"2.3.1"
}
}
【require】
首先说说require,packagist给出了三种写法,冒号前是开发商和包的名字,冒号后是版本,参见下图
我们要告诉composer我这个项目依赖哪个包(假设我们需要zendframework2的包)
先上https://packagist.org搜索zendframework2
将”zendframework/zendframework”:”2.3.1″ 输入(开发商/包的名字:版本号)
composer.json配置完后,在命令行执行composer install,它会按照你的json文件配置自动下载zf2框架,并实现自动加载
用命令composer update更新要新加载的组件
(三种写法)↓
【repositories】
如果我要用的组件不在packagist上,在github上怎么办
先定义库的地址(见上面代码
原理是:如果我在require里定义要加载的库在默认的getpackagist.org上找不到,则会到repositoiries里定义的网站里找
加载自定义组件(自身组件)
仍然是在composer.json文件里配置
先建个类库,比如izumi/EventManager/EventManager.php(供应商名+文件夹名+类文件)(phpflag规范规定类名和文件名必须是一样的)
{
"name": "izumi/composer-test",
"autoload":{
"psr-0":{
"izumi\\":"vendor"
}
}
}
规定psr-0规则,izumi\是厂商名(也是命名空间),vendor /表示供应商所在的文件夹名
配置完成后执行命令行composer install
加载位于vender下的没有定义命名空间的类
比如在vendor下有个Tools.php
{
"name": "izumi/composer-test",
"autoload":{
"psr-0":{
"Tools":"vendor"
}
}
}
Tools表示是一个类,告诉composer这个类所在的文件夹是vendor
Tools不写的话,会将vendor文件夹作为全局命名空间,vendor下的类会全部加载
自动加载会有一定的性能消耗
可以用classmap来定义要加载类的绝对地址
"classmap":["vendor/izumi","vendor/Tools.php"]
自动加载一个函数
比如在vendor/izumi/functions.php里写个getTest方法
我们希望我们的每一个类都去调用这个functions.php的getTest方法
这时候我们可以定义files
"files":["vendor/functions.php"]
将自己写的包提交到packagist
①首先这个包内必须要有个composer.json文件(可以cd到该包内,执行composer init命令)
②名字要小写
③可以先将整个包提交到github上
④https://packagist.org/ 点击submit package ,可以先通过github账户登录网站
⑤输入要提交包的git地址
让你提交到packagist的包跟着github更新而更新
在github该包的页面,点击setting->webhooks&Services->Add service->输入packagist->提示输入github密码->输入token(在packagist.org点击用户名点击Show API Token获取token)