PHP之前的类库管理
php开发者很多,并且在web开发领域占据绝对统治地位. 在20年的发展过程中,无数开发者开发了无数的类库. 但是,当你想用某个库时,是怎么做的呢? 比如:phpmailer,一个发邮件的库,我们往往这样做: 1. 打开搜索引擎,搜索phpmailer. 2. 从phpmailer官网或不知名的网站,下载源码. 3. 解压然后放到自己的项目中,在看手册调用. 4. 假如phpmailer需要smtp类才能正常运行,又要继续从开始下载. 如上,我们可以看出,php的开发者虽多,类库虽多,但存在以下几个问题. 1. 没有统一的资源仓库,到处乱找. 2. 没有统一的安装方式.rar,zip,tar各种包都有.下载后自己得整理. 3. 遇到库的依赖关系,得自己再次下载解决. 可见,php的库虽多,但都是散落在互联网的各个角落,不成系统,且没有统一的规范. java有maven , python有pip, node.js有npm,前端有bower 自从有了composer,这些库就被组织起来了.
安装composer
我们安装composer需要一定的要求,既然我们来到php这个目录下,就把需要的扩展打开; php版本要求:>=5.5.9; .OpenSSL扩展 .PDO扩展 .Mbstring扩展 如不满足以上条件,请修改php.ini 配置或重新编译PH#### liu下安装composer
<span class="fontstyle1">cd <path>curl -sS </path></span><span class="fontstyle1">https://getcomposer.org/installer </span><span class="fontstyle1">| phpmv composer.phar /usr/bin/composer</span>#### 配置composer 修改国内镜像
因为composer的软件仓库位置在国外,所以我们修改国内镜像,提高速度 <span class="fontstyle4">composer config -g repositories.packagist composer https://packagist.phpcomposer.com</span>#### 为项目引入某个库
假如我们blog项目中需要smarty这个组件,我们来到https://packagist.org/ 搜索smarty,并注意看项目的目录和版本信息. 我们需要在项目根目录下写入composer.json文件,注意必须是json格式 内容如下: {"require" : {"smarty/smarty":"3.1.30"}}然后,我们到项目的根目录下输入composer install <span class="fontstyle1">D:\xampp\htdocs\myphp\blog>composer installLoading composer repositories with package informationUpdating dependencies (including require-dev)- Installing smarty/smarty (v3.1.30)Downloading: 100%Writing lock fileGenerating autoload files</span>查看项目根目录下,有一个vendor的文件夹,文件夹内有一个smarty的文件夹#### 如何加载引入的库
.如果我们通过composer引入上百个类库,我们如何引入呢,手工require? .不用的,composer的类都满足一定的标准(psr-4标准); .Composer中生成了一个vendor/autoload.php的文件(我们都只到autoload是自动加载) .利用它你可以很容易的就引入这个文件,会得到完善的自动加载支持. .下面我们自己在项目下写一个文件看如何引入smarty这个类<span class="fontstyle1">require(__DIR__ . '/vendor/autoload.php');print_r( new Smarty() );</span>#### 添加某个新库
假如项目后期需要引入某个新库,比如phpmailer处理库 只需要在require后添加就可以,例:<span class="fontstyle2"></span><span class="fontstyle1">{"require" : {"smarty/smarty":"3.1.30","phpmailer/phpmailer": "5.2.16"}}</span>然后composer install,可能会出现composer.json较新,composer.lock较旧这样的错误<span class="fontstyle0"></span><span class="fontstyle1">Loading composer repositories with package informationInstalling </span><span class="fontstyle1">dependencies (</span><span class="fontstyle1">including </span><span class="fontstyle1">require-</span><span class="fontstyle1">dev</span><span class="fontstyle1">) </span><span class="fontstyle1">from lock file</span><span class="fontstyle1">Warning</span><span class="fontstyle1">: </span><span class="fontstyle1">The lock file is not up to date with the latest changes in composer</span><span class="fontstyle1">.</span><span class="fontstyle1">json</span><span class="fontstyle1">. </span><span class="fontstyle1">You may be getting outdated dependencies</span><span class="fontstyle1">. </span><span class="fontstyle1">Run update to update them</span><span class="fontstyle1">.</span><span class="fontstyle1">Nothing to install </span><span class="fontstyle1">or </span><span class="fontstyle1">updateGenerating autoload files</span>解决办法::(warning 提示的就是答案)<span class="fontstyle2"></span><span class="fontstyle1">composer update</span>#### 卸载某个库
以卸载phpmailer为例<span class="fontstyle0"></span><span class="fontstyle1">composer remove phpmailer/phpmailer </span><span class="fontstyle2">,</span><span class="fontstyle0">不必加版本号</span><span class="fontstyle2">.</span>卸载成功后,composer.json自动变为:<span class="fontstyle2"></span><span class="fontstyle1">{"require" : {"smarty/smarty":"3.1.30"}}</span>#### 不配置json文件新增某库
<span class="fontstyle0"></span><span class="fontstyle1">composer require </span><span class="fontstyle0">厂商</span><span class="fontstyle1">/</span><span class="fontstyle0">类库</span><span class="fontstyle1">=</span><span class="fontstyle0">版本说明</span>比如:我们新增另外一个叫phpmailer的库,先到https://packagist.org/搜索phpmailer<span class="fontstyle1">composer require phpmailer/phpmailer=5.2.16</span>运行后会发现vendor下多出来一个phpmailer'目录. 且composer.json文件和comopose.lock文件也已自动更新 如下::<span class="fontstyle2"></span><span class="fontstyle1">{"require" : {"smarty/smarty":"3.1.30","phpmailer/phpmailer": "5.2.16"}}</span>#### 库的版本说明
版本约束可以由以下几个方法来指定 波浪号运算 ~最好用例子来解释: ~1.2相当于>=1.2,, 而~1.2.3 相当于 >=1.2.3,。 即, 版本号最后一位数字可且只可提升.#### composer 创建项目
刚才我们是用composer引入某个库,库放在vendor目录下,供项目使用 那对于项目,我们需要怎么去做,显示这种效果呢? 我们需要下载项目的源码,然后放在自定义的文件夹下,而不是vendor目录下 然后执行cmd命令<span class="fontstyle0"></span><span class="fontstyle1">composer create-project laravel/laravel=5.5.0</span>执行后,在当前目录下,我们会发下多出一个laravel的目录 代码结构如下:: 你可以看到, laravel目录下, 有个composer.json文件, 说明他需要依赖很多库。 当然, 这些都可以自动下载。
评论1
暂时没有评论