composer组件和用法
1. monolog 日志
网址:https://github.com/Seldaek/monolog
命令:
$ composer require monolog/monolog
<?php
require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// 创建一个日志
$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/ your.log', Logger::WARNING));
// 将记录添加到日志中
$log->warning('Foo');
$log->error('Bar');
2. starlit/db
网址:https://github.com/starweb/starlit-db
$ composer require starlit/db
测试:
<?php
require 'vendor/autoload.php';
use Starlit\Db\Db;
$db = new Db('localhost', 'zhangsan', '123', 'mydb');
//echo $db->insert('stu', ['id'=>null,'name' => 'zhangwuji','age'=>20]);
$res = $db->fetchRows("select * from stu where id=:id",['id'=>2]);
echo "<pre>";
print_r($res);
3. 验证码
安装命令:
composer require gregwar/captcha
在composer.json中添加:
"require": {
...
...
"gregwar/captcha": "1.*"
},
具体使用
<?php
require 'vendor/autoload.php';
use Gregwar\Captcha\CaptchaBuilder;
use Gregwar\Captcha\PhraseBuilder;
$phrase = new PhraseBuilder();
// 设置验证码位数
$code = $phrase->build(6);
// 生成验证码图片的Builder对象,配置相应属性
$builder = new CaptchaBuilder($code, $phrase);
// 设置背景颜色
$builder->setBackgroundColor(220, 210, 230);
$builder->setMaxAngle(25);
$builder->setMaxBehindLines(0);
$builder->setMaxFrontLines(0);
// 可以设置图片宽高及字体
$builder->build($width = 100, $height = 40, $font = null);
// 获取验证码的内容
$phrase = $builder->getPhrase();
// 把内容存入session
//\Session::flash('code', $phrase);
// 生成图片
header("Cache-Control: no-cache, must-revalidate");
header("Content-Type:image/jpeg");
$builder->output();
4. 基于词库的中文转拼音优质解决方案 overtrue/pinyin
composer require "overtrue/pinyin:~3.0"
<?php
require 'vendor/autoload.php';
use Overtrue\Pinyin\Pinyin;
$pinyin = new Pinyin();
$pinyin->convert('带着希望去旅行,比到达终点更美好');
// ["dai", "zhe", "xi", "wang", "qu", "lv", "xing", "bi", "dao", "da", "zhong", "dian", "geng", "mei", "hao"]
$pinyin->convert('带着希望去旅行,比到达终点更美好', PINYIN_UNICODE);
// ["dài","zhe","xī","wàng","qù","lǚ","xíng","bǐ","dào","dá","zhōng","diǎn","gèng","měi","hǎo"]
$pinyin->convert('带着希望去旅行,比到达终点更美好', PINYIN_ASCII);
//["dai4","zhe","xi1","wang4","qu4","lv3","xing2","bi3","dao4","da2","zhong1","dian3","geng4","mei3","hao3"]
5. twbs/Bootstrap
composer require twbs/bootstrap
6. Composer的endroid/Qrcode二维码组件
安装命令:
$ composer require endroid/qrcode
具体使用:
<?php
use Endroid\QrCode\QrCode;
$qrCode = new QrCode();
$qrCode->setText('Life is too short to be generating QR codes')
->setSize(300)
->setPadding(10)
->setErrorCorrection('high')
->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0))
->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0))
->setLabel('Scan the code')
->setLabelFontSize(16)
->setImageType(QrCode::IMAGE_TYPE_PNG);
// now we can directly output the qrcode
header('Content-Type: '.$qrCode->getContentType());
$qrCode->render();
// or create a response object
$response = new Response($qrCode->get(), 200, array('Content-Type' => $qrCode->getContentType()));
7. Guzzle HTTP客户端组件
网址:https://github.com/guzzle/guzzle
官方网站: http://guzzlephp.org/
环境要求
>=PHP5.5
在php.ini中开启 allow_url_fopen
cURL >= 7.19.4 并支持OpenSSL和zlib
安装命令:
$ composer require guzzlehttp/guzzle:~6.0
参考实例代码:
创建一个客户端
<?php
setCookie("name","lisi",time()+3600,"/");
require("../vendor/autoload.php");
use GuzzleHttp\Client;
$client = new Client([
// 基本URI用于相对请求
'base_uri' => 'http://192.168.33.10',
//你可以设置任意数量的默认值
'timeout' => 2.0,
//'cookies' => $jar,
]);
//GET请求及带参数
$response = $client->request("GET","/mydemo/public/1.php?id=10");
//$response = $client->request("GET","/mydemo/public/1.php",['query'=>["name"=>"zhangsan","age"=>20]]);
//$response = $client->get("/mydemo/public/1.php",['query'=>["name"=>"zhangsan","age"=>20]]);
//POST请求并带参数
//$response = $client->request("POST","/mydemo/public/1.php",['form_params'=>["name"=>"zhangsan","age"=>20]]);
//$response = $client->post("/mydemo/public/1.php",['form_params'=>["name"=>"zhangsan","age"=>20]]);
/*
//带上传信息
$response = $client->request('POST', '/mydemo/public/1.php',['multipart'=>[[
'name' => 'file_name',
'contents' => fopen('./1.png', 'r'),
'filename' => '1.png',
]]]);
*/
//携带Cookie信息
//$jar = \GuzzleHttp\Cookie\CookieJar::fromArray(['name'=>"zhangsan"],"192.168.33.10");
//$response = $client->request('GET', '/mydemo/public/1.php',['cookies'=>$jar]);
//处理相应
//var_dump($response);
/*
echo "code:".$response->getStatusCode()."<br/>"; //获取响应状态码200
echo "reason:".$response->getReasonPhrase()."<br/>"; //响应是否成功OK
//判断响应头是否存在
if ($response->hasHeader('Content-Length')) {
echo "It exists";
}
//获取指定某个响应头信息
echo $response->getHeader('Content-Length');
//获取所有响应头信息
foreach ($response->getHeaders() as $name => $values) {
echo $name . ': ' . implode(', ', $values) . "\r\n";
}
*/
$body = $response->getBody();
// 隐式地将主体转换为字符串并对其进行响应
//var_dump($body);
//echo $body;
//显式地将主体转换为字符串
//$stringBody = (string) $body;
// 从正文中读取10个字节
//echo $tenBytes = $body->read(5);
// 将主体的剩余内容作为字符串读取
echo $remainingBytes = $body->getContents();