Composer构建现代PHP帝国(一)——Composer快速入门
来源:互联网 发布:链表的定义node *next 编辑:程序博客网 时间:2024/04/30 07:22
一.认识Composer
Composer作为近几年新兴的组件式开发最为现代化进程的一个标志,下面引入[岁寒]博主对Composer的精彩介绍我想再适合不过了,感觉官方对Composer的优点介绍还没有岁寒大神的文章精彩啊!
Composer 一统天下的时代已经到来!
Framework Interoperability Group(框架可互用性小组),简称 FIG,成立于 2009 年。FIG 最初由几位知名 PHP 框架开发者发起,在吸纳了许多优秀的大脑和强健的体魄后,提出了 PSR-0 到 PSR-4 五套 PHP 非官方规范:
PSR-0 (Autoloading Standard) 自动加载标准
PSR-1 (Basic Coding Standard) 基础编码标准
PSR-2 (Coding Style Guide) 编码风格向导
PSR-3 (Logger Interface) 日志接口
PSR-4 (Improved Autoloading) 自动加载优化标准
之后,在此标准之上,Composer 横空出世!Composer 利用 PSR-0 和 PSR-4 以及 PHP5.3 的命名空间构造了一个繁荣的 PHP 生态系统。Composer 类似著名的 npm 和 RubyGems,给海量 PHP 包提供了一个异常方便的协作通道,Composer Hub 地址:https://packagist.org/。Composer 中文网站:http://www.phpcomposer.com/。
目前 PHP 界风头正劲的 Laravel 和 Symfony 均直接基于 Composer,大家耳熟能详著名框架 CI 和 Yii 的正开发版本 CodeIgniter 3 和 Yii 2 也都基于 Composer(更新:北京时间2014年10月13日 Yii 2 已经发布)。Composer 就是 PHP 框架的未来,有了它,让 CI 的路由和 Laravel 的 Eloquent ORM 协作就会变的非常简单。
二.快速安装
命令行下载需要先进入到指定项目根目录,无则创建!网页下载完毕后直接粘贴到项目根目录即可.
1.下载和安装
(1).最简单最快最粗暴的方法:
直接下载与本文章同目录的 composer.phar即可
(2).使用PHP命令下载:
#php -r "readfile('https://getcomposer.org/installer');" > composer-setup.php #php composer-setup.php
(3).使用CURL命令下载:
#curl -sS https://getcomposer.org/installer | php
(4).到官方网址点击选中版本下载或者哪里有composer.phar,直接下载该文件就行官网下载地址链接:
https://getcomposer.org/download/
2.检验安装是否成功
执行下面命令测试是否安装成功,成功则输出帮助命令,不成功则出现红色提示
#php composer.phar
3.局部和全局使用
局部使用就是需要带上php命令执行,只能在该根目录下操作,全局则对整个系统有效
(1)局部操作,使用局部操作则无需多做其他操作了,直接使用
#php composer.phar [命令参数]
(2)全局操作全局操作,就是把composer.phar移到系统PATH环境中,如Unix系统下执行以下命令:
#mv composer.phar /usr/local/bin/composer
然后在系统的任何地方执行composer命令查看是否有什么惊喜吗?
Windows用户请自行研究PATH环境变量怎么使用吧!
三.Composer.json快速实践
Composer说得通俗一点就相当于组件式开发,只要符合psr-4规范的组件,类库,函数库,文件等都可以使用Composer.Composer可以小到只为你自动加载一个小小的配置文件,达到可以为你构建自己的框架,构建分布式应用.当你学会了自然会爱不释手的,比如参考岁寒的文章构建一次自己的小框架试试,相信会让你更喜欢Composer的.
1.安装或更新所有依赖
php composer.phar update 或 composer update
2.安装或更新一个依赖
php composer.phar update monolog/monolog […]
3.自动加载库文件,必须在入口中或你想更方便的加载第三方代码
require 'vendor/autoload.php’;
4.使用composer头描述: 标明该项目名,描述信息,关键字,类型,版权声明,作者,开发版本类型
{ "name": "test/composer", "description": "This is a simple test for use composer", "keywords": ["library", "Framework"], "type": "project", "license": "Apache2", "authors": [ { "name": "liangfeng", "email": "1092313007@qq.com" } ], "minimum-stability": "beta", "require": {}}
5.引入依赖包链接(Package links)
可在https://packagist.org/搜索开源的各种类型的包,如phpunit,phpdoc,monolog,orm等等第三方提供的强大组件,可想而知composer多么的强大.
引入包的格式都应该是:
{ "引入方式" { "供应商/包名" : "版本" }}
引入依赖有5种方式,常用有2种[require],[require-dev (root-only)],不常用有3种 [conflict],[replace],[provide]
1)require 必须的软件包列表,除非这些依赖被满足,否则不会完成安装。
{ "require": { "monolog/monolog": "1.0.*" }}
2)require-dev(root-only) 这个列表是为开发或测试等目的,额外列出的依赖。“root 包”的 require-dev 默认是会被安装的。然而 install 或 update 支持使用 --no-dev 参数来跳过 require-dev 字段中列出的包。
{ "require-dev": { "monolog/monolog": "1.0.*" }}
其他不常用的就不讲了,那三个包分别是:
conflict(此列表中的包与当前包的这个版本冲突)
replace(列表中的包将被当前包取代)
provide(此包提供的其他包的列表,这主要是有用的常见的接口)
引入依赖包需要熟悉require和require-dev外,其中版本是一个需要特别熟悉的地方,入面引入官方详细说明
6.composer.json文件之autoload
使用autoload可加载本地所需要的自动加载文件。对于第三方包的自动加载,Composer提供了四种方式的支持,分别是psr-0 psr-4 classmap 和 files。
( 1 ) ClassMap
是通过配置指定的目录或文件,执行安装或更新时,它会扫描指定目录下以.php或.inc结尾的文件中的class,生成class到指定file path的映射,并加入新生成的 vendor/composer/autoload_classmap.php 文件中
( 2 ) PSR-4
是composer推荐使用的一种方式,因为它更易使用并能带来更简洁的目录结构。按照PSR-4的规则,当试图自动加载"App\Bar\Baz"这个class时,会去寻找”app/Bar/Baz.php"这个文件,如果它存在则进行加载。注意,”App\"并没有出现在文件路径中
( 3 ) PSR-0
与PSR-4不同的一点,如果PSR-0有此配置,那么会去寻找”app/App/Bar/Baz.php"这个文件。
( 4 ) Files
就是手动指定供直接加载的文件。比如说我们有一系列全局的helper functions,可以放到一个helper文件里然后直接进行加载
"autoload": { "classmap": [ "vendor/sexyphp" ], "psr-4": { "App\\": "app/“ //key(namespace)和value(相应path)定义方式, App\\ 双反斜杠前者是转义符 }, “psr-0": [ "App\\": “app/“ ], "files": [ "src/MyLibrary/functions.php” ] },
7.以 laravel 项目的 composer.json 配置文件为例:
{"name": "laravel/laravel","description": "The Laravel Framework.","keywords": ["framework", "laravel"],"license": "MIT","type": "project","require": { "php": ">=5.6.4", "laravel/framework": "5.3.*"},"require-dev": { "fzaninotto/faker": "~1.4", "mockery/mockery": "0.9.*", "phpunit/phpunit": "~5.0", "symfony/css-selector": "3.1.*", "symfony/dom-crawler": "3.1.*"},"autoload": { "classmap": [ "database", "vendor/sexyphp" ], "psr-4": { "App\\": "app/" }},"autoload-dev": { "classmap": [ "tests/TestCase.php" ]},"scripts": { "post-root-package-install": [ "php -r \"file_exists('.env') || copy('.env.example', '.env');\"" ], "post-create-project-cmd": [ "php artisan key:generate" ], "post-install-cmd": [ "Illuminate\\Foundation\\ComposerScripts::postInstall", "php artisan optimize" ], "post-update-cmd": [ "Illuminate\\Foundation\\ComposerScripts::postUpdate", "php artisan optimize" ]},"config": { "preferred-install": "dist"}}
关于学完快速入门后,是否对Composer有一定的了解啦,或许你还没我那么喜爱它吧,因为它还有很多强大的功能在上面我们还没有应用到它,下一篇文章将介绍如何编写符合Composer自动加载的组件/类库,慢慢我们接触包括script执行脚本,构建自己的CLI命令帝国,利用Composer构建自己的框架帝国,再用Composer上传自己的开源作品,只要到开源作品的展示并受大家欢迎,你已经可以问鼎PHP(拼音)的制品人啦!
- Composer构建现代PHP帝国(一)——Composer快速入门
- Composer构建现代PHP帝国(二)——编写自己的Composer包
- composer快速入门(一)——概述
- Composer快速入门
- 利用 Composer 一步一步构建自己的 PHP 框架(一)——基础准备
- 利用 Composer 一步一步构建自己的 PHP 框架(一)——基础准备
- Composer快速入门(张高伟)
- Laravel 快速入门 ( 一 ) composer 介绍以及安装
- laravel 课程学习系列一----------------第一章.composer快速入门
- PHP依赖管理器:Composer 入门
- PHP依赖管理工具Composer入门
- PHP依赖管理工具Composer入门
- PHP依赖管理工具Composer入门
- PHP依赖管理工具Composer入门
- 利用 Composer 一步一步构建自己的 PHP 框架(二)——构建路由
- 利用 Composer 一步一步构建自己的 PHP 框架(二)——构建路由
- 利用 Composer 一步一步构建自己的 PHP 框架(二)——构建路由
- Composer入门
- [欧拉回路 dfs树] Balkan OI 2016 Acrobat
- elk 5.1 用于mysql slow 日志
- 2016-12-27
- iOS多线程 - NSThread锁的使用(多线程资源共享的问题)
- LintCode 187-加油站
- Composer构建现代PHP帝国(一)——Composer快速入门
- 【数据结构0】数据结构概述
- LayoutInflater Factory使用基础与进阶
- Python偶数奇数简单实现
- 信息检索概论总结
- 轻量级的ORM框架Peewee访问sqlite数据库
- 集合框架_产生10个1-20之间的随机数要求随机数不能重复案例
- eclipse中使用Maven创建Web项目
- 最近要读的一本书 《C++标准程序库》