Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。
(一)如何添加包:
packagist 是 Composer 的主要资源库。 一个 Composer 的库基本上是一个包的源:记录了可以得到包的地方。
Packagist 的目标是成为大家使用库资源的中央存储平台。这意味着你可以 require 那里的任何包。
当你访问 packagist website (packagist.org https://packagist.org/ ),你可以浏览和搜索资源包。
如果想要添加CI框架,composer.json文件可以写成:
{
"require" :{
"monolog/monolog": "1.0.*", // monolog库
"codeigniter/framework": "3.0rc3" // CI 包
}
}
执行composer install 后,在vendor 文件夹下会出现codeigniter文件夹和monolog文件夹;
(二) Composer 中的自动加载
[php] view plain copy
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
key和value就定义出了namespace以及到相应path的映射。按照PSR-4的规则,
当试图自动加载 "Foo\\Bar\\Baz" 这个class时,会去寻找 "src/Bar/Baz.php" 这个文件,
如果它存在则进行加载。注意, "Foo\\"
注意在测试文件中一定要加载"require '../../../vendor/autoload.php';" 文件,只用加载了这个文件,其他的才不用加载;
例如在文件src/Bll/Foo.php
代码为:
// 命名空间
namespace App\Bll;
class UserBll {
public static function test(){
echo 'thisi is auto_loader ' ;
}
}
测试文件: src/Controller/test.php
[php] view plain copy
namespace App\Controller;
use App\Bll\UserBll;
require '../../../vendor/autoload.php'; // 一定要加上此文件才可以
UserBll::test();
详情见:
http://www.tuicool.com/articles/mARrMj6
http://my.oschina.net/u/248080/blog/359008
http://my.oschina.net/houlive/blog/206832
加载类: 在本地文件中创建 lib/Payment.php
namespace PaymentGateway;
class Payment {
public function process()
{
echo 'hello world ' ;
}
}
composer.json 中如下:
[php] view plain copy
"autoload": {
"classmap":["lib"]
}
执行命令: composer dump-autoload
测试文件
[php] view plain copy
namespace Paf\App\Controller;
use Paf\App\Bll\UserBll;
use Payment\Payment;
require '../../../vendor/autoload.php';
UserBll::test();
Payment::process();
如果不use的话可以这么写:
[php] view plain copy
require '../../../vendor/autoload.php';
\Paf\App\Bll\UserBll::test();
\Payment\Payment::process();
(三) 创建一个自己的 Composer/Packagist 包
(1) 在gitlub上托管一个git仓库
(2) 在根目录中添加 composer.json 文件,文件内容如
{
"name": "louis/wlt-miaomu",
"description": "In order to develop the miaomu cite ",
"license": "MIT",
"authors": [
{
"name": "Louis",
"email": "wang**@163.com"
}
],
"minimum-stability": "dev",
"require": {
"php": ">=5.3.0"
},
"autoload": {
"psr-4":
.........................................................