首先支持下黄老师的视频网站转型
这篇composer的学习笔记也是根据他的视频教程写的,一共十集,讲解的很简单
感兴趣的同志们能够上他视频网站购买视频,网站地址放在文末
个人php博客:http://www.manyue.mephp
composer做用
一、自动安装所须要的模块,自动加载
二、管理项目,发布到packeglist网上上去(packgist是composer默认的加载组件地址)git
安装
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路径确认
安装完毕github
开始使用composer加载咱们须要的第三方组件
经过创建composer.json文件告诉composer咱们须要依赖哪一个文件
该文件可经过命令行建立:composer init
json文件格式以下:web
{ "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更新要新加载的组件
(三种写法)↓json
【repositories】
若是我要用的组件不在packagist上,在github上怎么办
先定义库的地址(见上面代码
原理是:若是我在require里定义要加载的库在默认的getpackagist.org上找不到,则会到repositoiries里定义的网站里找segmentfault
加载自定义组件(自身组件)
仍然是在composer.json文件里配置
先建个类库,好比izumi/EventManager/EventManager.php(供应商名+文件夹名+类文件)(phpflag规范规定类名和文件名必须是同样的)windows
{ "name": "izumi/composer-test", "autoload":{ "psr-0":{ "izumi\\":"vendor" } } }
规定psr-0规则,izumi\\是厂商名(也是命名空间),vendor /表示供应商所在的文件夹名
配置完成后执行命令行composer install
加载位于vender下的没有定义命名空间的类
好比在vendor下有个Tools.phpcomposer
{ "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)