Home / PostsPost
框架集成 Composer 包依赖管理
嘟噜聪2015/10/17 16:46:03 6234人已阅
简介 前段时间同事说让我写一个关于composer集成在框架里的文档,其实我是拒绝的。仔细一想,突然发现自己写了那么多的东西都使用了composer,却没有在任何一篇文章里讲要如何安装composer,可能是觉得这种太简单了,并且网上还有大量的中文文档可以参考,感觉自己再写这就有点多余了。既然是同事提了,那我就稍微写一点吧,写得不好也别打脸,必竟我水平就摆在那里。
框架集成 Composer 包依赖管理
前段时间同事说让我写一个关于composer集成在框架里的文档,其实我是拒绝的。仔细一想,突然发现自己写了那么多的东西都使用了composer,却没有在任何一篇文章里讲要如何安装composer,可能是觉得这种太简单了,并且网上还有大量的中文文档可以参考,感觉自己再写这就有点多余了。既然是同事提了,那我就稍微写一点吧,写得不好也别打脸,必竟我水平就摆在那里。
composer是什么
是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。*(一本正经的copy过来的)*。简单来说就是一个依赖包管理工具,写过Java的人应该都了解包管理,Composer 不是一个包管理器。它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。其实composer与Ruby on Rails的bundle很像,你看symfony就是一个一个的bundle组成的。
安装composer
以下的所有操作我都是在linux系统下执行的(CentOS,Ubuntu也类似) 可能会有些东西连不上或报错,如果发生这种现象请使用代理工具保证能访问到国名的资源,还有就是所有的前提都是你本机已经装好php5.3以上的版本。
苹果OS X系统的安装方法网上也很好找,有兴趣的可以Google一下。
下载 Composer 的可执行文件
有一种方式是把composer.phar下载/bin
目录下取名为composer 就可以了,这个比较简单然后执行composer
看看能不能运行起来。
咱们还是用正常人的方式来安装吧,也非常简单,执行下面命令就好了:
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin
mv /usr/bin/composer.phar /usr/bin/composer
--install-dir
是指定composer的安装目录,下载完后把文档名改成composer
,这样的话就可以在全局任何地方执行了,不信的话您可以敲一下composer -V
命令,应该会显示当前的版本号及更新时间。这样composer就安装好了,是的,就这么简单,毫无任何技术含量。
CodeIgniter、ThinkPHP增加composer
其实这个也非常简单,咱们进入到ci的根目录,执行命令composer install
骚等一段时间(这里如果不直安装不了的话请使用代理),安装完成后在当前目录会生成一个/vendor
的目录,并且当前目录会生成一个composer.json
及composer.lock
这里要注意的是,如果没有特殊需求的话composer.lock
应该是不需要修改的,除非那个资源访问不了了,而咱们如果需要增加依赖包的话只要修改composer.json
文件就可以了。
下面的是/vendor
目录的结构:
/vendor
/composer/
autoload_classmap.php
autoload_files.php
autoload_namespace.php
autoload_psr4.php
autoload_real.php
ClassLoad.php
include_paths.php
installed.json
autoload.php
composer.json
{
"require": {
"twig/twig" : "~1.0",
"monolog/monolog": "1.2.*",
"doctrine/orm": "2.5.0",
"ircmaxell/password-compat": "~1.0.3",
"erusev/parsedown": "1.5.3",
"videlalvaro/php-amqplib": "^2.6"
}
}
ps: *以上的composer.json*文件里的配制是我现在项目上用到了一些名,当然,刚装好这里什么也木有。
东西也不多,有兴趣的话可以看看,挺好理解的,当然,如果没有特殊需求的话,这些文件也是不用去修改的,因为每次新增加依赖包的话它会自动更新,并且把namespace及路径更新进去,ok这样我们就算是准备好composer了。
CodeIgniter用ThinkPHP引入autoload.php 文件
CI这个相当简单,只要在index.php
文件的require_once BASEPATH.'core/CodeIgniter.php';
上面把composer的autoload.php
文引入进去就行了,具体的可以看下面:
require_once './vendor/autoload.php';
require_once BASEPATH.'core/CodeIgniter.php';
ThinkPHP与CI一样,只要在入口文件把autoload.php
文件引入进去就行了。
require_once './vendor/autoload.php';
require './ThinkPHP/ThinkPHP.php';
安装一个依赖包
安装依赖包的方法有两种,我就以一个markdown解析工具为例子吧,其他包的使用方法大同小异:
composer require erusev/parsedown
推荐使用这种方式,方便快捷
编辑
composer.json
文件,在文件的增加:{ "require": { "erusev/parsedown": "1.5.3", } }
这种方式需要再进行一步操作
执行命令: composer update ps: 这种方式不太推荐,因为它会把之前所有的包都更新成最新的 速度老慢了...
当上面的那些命令执行完成后理论上包就应该已经下来了,它会在/vendor
目录下的 /vendor/erusev/parsedown
目录,并且更新了/vendor/composer
目录下的一些文件,简单说就是进行了包的注册,方便后面使用。
使用
CodeIgniter
使用方法非常简单,我都不好意思写,咱们打开Welcome.php
控制器,有两种方式:
- 使用
use
关键字把Parsedown
类给引入进来,然后再new
关键字实例化 直接使用
new
关键字实例化,但必须new这个命令空间class Welcome extends CI_Controller { public function indexByUse() { $parseDown = new Parsedown(); echo $parseDown->text("# Hello World!"); } public function indexByNew() { $parseDown = new \Parsedown(); // 因为这个包比较简单没有声名一个包,有些可能是这样 new \Bundle\Controller(); echo $parseDown->text("# Hello World!"); } }
上面两种方法也不能说谁优谁劣势,不过建议还是使用
use
好些,以后方便管理。
ThinkPHP
这个与CI框架一样,我就不多兴例子了,直接贴代码吧...
class DefaultAction extends Action {
public function indexUse()
{
$parseDown = new Parsedown();
echo $parseDown->text("# Hello World!");
}
public function indexByNew()
{
$parseDown = new \Parsedown();
echo $parseDown->text("# Hello World!");
}
}
尾巴
附上package的地址,如果想使用一些第三方的包的话可以去这里找。 地址: https://packagist.org
好了,关于composer的篇章就讲完了,系是系超级简单啊。哈哈哈哈哈,这东西真的很不错,大家好好玩。关于如果提交自己写的包至packagist,这个我也不没试过,等我把它整透彻之后有机会,有时间,咱们可以再来讨论讨论。
Date: 2015年10月17日
很赞哦! (0)
下一篇:痛定思痛 更痛
文章评论
点击排行
本栏推荐
标签
站点信息
- 微信公众号