【Composer】实战操作一:使用库
前言
前面我们简单介绍了composer的安装 以及 如何安装库
本文目的
主要实战讲解如何使用库,主要是PSR-0 和 PSR-4的区别,以及如何在代码中引用。关于PSR-0和PSR-4的具体区别可以参考博文 PSR : php编码规范
演示代码
演示代码都在 https://github.com/apanly/composer_helloworld 中,有兴趣的可以clone
实战内容
引用资源
phpoffice/phpexcel
monolog/monolog
apanly/browser-detector (本人自己的库,后续会讲解如何创建自己的库)
composer.json文件如下
{
"require":{
"phpoffice/phpexcel": "1.8.0",
"monolog/monolog": "^1.21",
"apanly/browser-detector": "dev-master"
},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
}
开始准备
$ git clone https://github.com/apanly/composer_helloworld
$ cd composer_helloworld
$ php composer.phar install #生成vendor目录以及下载composer.json配置的库
演示1
index.php主要演示使用apanly/browser-detector库,本库使用PSR-4自动加载
$ php index.php #使用apanly/browser-detector库
Chrome
Android
Meizu
演示2(PSR-0)
psr4.php 使用phpoffice/phpexcel,本库使用PSR-0标准,规则讲解如下
根据博文中( http://www.54php.cn/default/173.html )介绍的,使用PSR-0规则自动加载,对于最后一个\之后的类名,如有下划线会转化成路径分隔符
PHPExcel_IOFactory 就会转化为 PHPExcel\IOFactory
按照配置的规则
"autoload": {
"psr-0": {
"PHPExcel": "Classes/"
}
}
PHPExcel_IOFactory => Classes/PHPExcel/IOFactory.php
演示代码如下
<?php
require(__DIR__.'/vendor/autoload.php');
$path = 'test.xlsx';
$objPHPExcel = PHPExcel_IOFactory::load( $path );
演示3(PSR-4)
psr4.php 使用 monolog/monolog 库,本库使用psr-4自动加载,规则讲解如下
根据博文中(http://www.54php.cn/default/173.html)介绍的,使用PSR-4规则自动加载
按照配置的规则
"autoload": {
"psr-4": {"Monolog\\": "src/Monolog"}
}
Monolog\Logger => src/Monolog/Logger.php
Monolog\Handler\StreamHandler => src/Monolog/Handler/StreamHandler.php
演示代码如下
<?php
require(__DIR__ . '/vendor/autoload.php');
$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');
总结
推荐使用psr-4规范,因为这样更像命名空间并且也更简洁
时刻记住psr-0 和 psr-4的区别,这样就可以很方便的使用第三方库,避免重复造轮子
记得使用国内源(翻墙的绕行)
原文地址:【Composer】实战操作一:使用库
标签:composer psr phpexcel phpoffice monolog browser-detector psr0 psr-0 psr4 psr-4
智能推荐
- 【实战】Docker 入门实战一:安装Dockeer
- 如何查看google chrome 插件源码
- Composer : php依赖管理工具
- phpexcel 内存溢出 优化
- 【Composer】实战操作二:自己创建composer包并提交
【Composer】实战操作一:使用库的更多相关文章
- composer安装第三方的库packagist.org(laravel框架引入第三方库)
建立composer.json composer require phpoffice/phpexcel //安装一个excel扩展库 composer require gregwar/captcha ...
- Composer 安装 Jira API 库
环境要求: PHP >= 5.5.9 php JsonMapper phpdotenv 安装 下载安装 Composer curl -sS https://getcomposer.org/ins ...
- composer 使用详解
1,安装 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r &quo ...
- 使用composer安装项目依赖
Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们 下载并安装composer composer官方文档有好几种安装方法,此处只介绍我实验过 ...
- 【转载】PHP 开发者该知道的 5 个 Composer 小技巧
Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方 ...
- 5 个 Composer 小技巧
Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方 ...
- PHP 开发者该知道的5个 Composer 小技巧
Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方 ...
- php composer
对于现代语言而言,包管理器基本上是标配.Java有Maven,Python有pip,Ruby有gem,Nodejs有npm.PHP的则是PEAR,不过PEAR坑不少: 依赖处理容易出问题 配置非常复杂 ...
- Composer的使用
安装 curl -sS https://getcomposer.org/installer | php 你可以使用--install-dir选项将Composer安装到指定的目录,例如: curl - ...
随机推荐
- BFS(双向) HDOJ 3085 Nightmare Ⅱ
题目传送门 题意:一个人去救女朋友,两个人都在运动,还有鬼在"扩散",问最少几秒救到女朋友 分析:开两个队列来表示两个人走过的路,一个人走到的地方另一个人已经vis了,那么就是相遇 ...
- 疯狂java学习笔记之面向对象(九) - 抽象和接口
一.抽象(abstract): 1.抽象类: 使用abstract修饰的类就是抽象类; 相比于普通类抽象类增加了支持抽象方法的功能,但也丢失了创建实例的功能(抽象类中不能创建实例),其他普通类有的抽象 ...
- js库写法
前言: 现在javascript库特别多,其写法各式各样,总结几种我们经常见到的,作为自己知识的积累.而目前版本的 JavaScript 并未提供一种原生的.语言级别的模块化组织模式,而是将模块化的方 ...
- 几个Windows电脑小技巧
1. 为cmd命令提示符设置默认的初始路径: 到开始菜单-附件-属性 里面有起始位置选项 其中%HOMEDRIVE%%HOMEPATH%就代表起始位置 如想每次键cmd进入命令提示符后的初始位置是 ...
- BZOJ4527 : K-D-Sequence
先把所有数减去最小值,防止负数出现问题. $d=0$,直接$O(n)$扫过去即可. $d\neq 0$,首先通过双指针求出每个数作为右端点时往左可以延伸到哪里,中间任意两个数差值都是$d$的倍数且不重 ...
- BZOJ 2427 & 分块裸题
题意: 求区间内的众数,强制在线. SOL: 推荐一个大神犇的blog,讲的还是很好的(主要我喜欢他的代码风格(逃:http://www.cnblogs.com/JoeFan/p/4248767.ht ...
- Codeforces Round #243 (Div. 2) C. Sereja and Swaps
由于n比较小,直接暴力解决 #include <iostream> #include <vector> #include <algorithm> #include ...
- 洛谷 P1160 队列安排 Label:链表 数据结构
题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...
- 让 Web 站点崩溃最常见的七大原因
磁盘已满 导致系统无法正常运行的最可能的原因是磁盘已满.一个好的网络管理员会密切关注磁盘的使用情况,隔一定的时间,就需要将磁盘上的一些负载转存到备份存储介质中(例如磁带). 日志文件会很快用光所有 ...
- 【BZOJ】2086: [Poi2010]Blocks
题意 \(n(1 \le n \le 1000000)\)个数\(a_i(a_i \le 10^9)\).\(m(1 \le m \le 50)\)次询问,每次给出一个\(k(k \le 10^9)\ ...