11. Goutte – Web抓取库

Goutte是二个抓取网站和提取数据的库。它提供了叁个雅淡的API,那使得从远程页面上采撷特定成分变得简单。

require_once '/path/to/goutte.phar'; 

use Goutte/Client; 

$client = new Client();
$crawler = $client->request('GET', 'http://www.symfony-project.org/'); 

//点击链接
$link = $crawler->selectLink('Plugins')->link();
$crawler = $client->click($link); 

//使用一个类CSS语法提取数据
$t = $crawler->filter('#data')->text(); 

echo "Here is the text: $t";
// 从norway.jpg图片初始化norway层$norwayLayer = ImageWorkshop::initFromPath('/path/to/images/norway.jpg'); // 从watermark.png图片初始化watermark层(水印层)$watermarkLayer = ImageWorkshop::initFromPath('/path/to/images/watermark.png'); $image = $norwayLayer-getResult(); // 这是生成的图片!header('Content-type: image/jpeg');imagejpeg($image, null, 95); // We choose to show a JPG with a quality of 95%exit;

19. Omnipay – 支付管理库

Omnipay是二个PHP支付管理库。它有二个清楚一致的API,何况扶持数拾叁个网关。使用那个库,你只是需求上学三个API和管理百端待举的付出微处理器。下边是二个例证:

use Omnipay\CreditCard;  use Omnipay\GatewayFactory;     $gateway = GatewayFactory::create('Stripe');  $gateway->setApiKey('abc123');     $formData = ['number' => '4111111111111111', 'expiryMonth' => 6, 'expiryYear' => 2016];  $response = $gateway->purchase(['amount' => 1000, 'card' => $formData]);     if ($response->isSuccessful()) {    //支付成功:更新数据库      print_r($response);  } elseif ($response->isRedirect()) {    //跳转到异地支付网关      $response->redirect();  } else {    //支付失败:向客户显示信息      exit($response->getMessage());  }

运用相仿一致的API,能够比较轻便地支撑四种支出微处理器,或在须求时展开切换。

9. Requests – 简单HTTP请求

Requests是三个简化HTTP诉求的库。假若您和本人同一,差十分的少根本都记不住传递给Curl的丰富多彩的参数,那么它正是为您盘算的:

$headers = array('Accept' => 'application/json');
$options = array('auth' => array('user', 'pass'));
$request = Requests::get('https://api.github.com/gists', $headers, $options);

var_dump($request->status_code);
// int(200)

var_dump($request->headers['content-type']);
// string(31) "application/json; charset=utf-8"

var_dump($request->body);
// string(26891) "[…]"

金沙糖果派对网站app,依傍那一个库,你能够发送HEAD、GET、POST、PUT、DELTE和PATCH
HTTP乞求,你可以因而数组添Gavin件和参数,並且能够访问具备相应数额。

19. Omnipay – 支付管理库

Omnipay是叁个PHP支付管理库。它有三个鲜美素佳儿(FrisoState of Qatar致的API,而且扶持数十一个网关。使用那个库,你独有须要上学八个API和管理百废待举的付出微机。下边是一个例证:

use Omnipay/CreditCard;
use Omnipay/GatewayFactory;

$gateway = GatewayFactory::create('Stripe');
$gateway->setApiKey('abc123');

$formData = ['number' => '4111111111111111', 'expiryMonth' => 6, 'expiryYear' => 2016];
$response = $gateway->purchase(['amount' => 1000, 'card' => $formData]);

if ($response->isSuccessful()) {

//支付成功:更新数据库
    print_r($response);
} elseif ($response->isRedirect()) {

//跳转到异地支付网关
    $response->redirect();
} else {

//支付失败:向客户显示信息
    exit($response->getMessage());
}

利用相近一致的API,能够超级轻松地支撑多样支出微处理机,或在需求时张开切换。

use Ubench\Ubench;$bench = new Ubench;$bench-start();//执行一些代码$bench-end();//获取执行消耗时间和内存echo $bench-getTime(); // 156ms or 1.123secho $bench-getTime(true); // elapsed microtime in floatecho $bench-getTime(false, '%d%s'); // 156ms or 1secho $bench-getMemoryPeak(); // 152B or 90.00Kb or 15.23Mbecho $bench-getMemoryPeak(true); // memory peak in bytes 内存峰值echo $bench-getMemoryPeak(false, '%.3f%s'); // 152B or 90.152Kb or 15.234Mb//在结束标识处返回内存使用情况echo $bench-getMemoryUsage(); // 152B or 90.00Kb or 15.23Mb

10. Buzz – 简单的HTTP请求库

Buzz是另二个完了HTTP乞请的库。下边是三个事例:

$request = new Buzz\Message\Request('HEAD', '/', 'http://google.com');  $response = new Buzz\Message\Response();     $client = new Buzz\Client\FileGetContents();  $client->send($request, $response);     echo $request;  echo $response;

因为它缺乏文书档案,所以您一定要阅读源码来获悉它援助的享有参数。

2. 克莱因 – PHP疾如雷暴的路由

克莱因是另一款针对PHP5.3+版本的轻量级路由库。固然它有局地比Dispatch冗长的语法,但它相当慢。那有一个事例:

respond('/[:name]', function ($request) {
    echo 'Hello ' . $request->name;
});

您也能够定制来钦定HTTP方法和使用正则表明式作为路线。

respond('GET', '/posts', $callback);
respond('POST', '/posts/create', $callback);
respond('PUT', '/posts/[i:id]', $callback);
respond('DELETE', '/posts/[i:id]', $callback);
//匹配多种请求方法:
respond(array('POST','GET'), $route, $callback);
//你或许也想在相同的地方处理请求
respond('/posts/[create|edit:action] /[i:id] ', function ($request, $response) 
{ 
      switch ($request->action) {
          // do something 
      }
});

对于迷你项目以来那是很棒的,但当您把叁个像那样的库用于大型应用时,你一定要遵循规矩,因为你的代码或者神速就变得不可维护。所以您最棒搭配一个像Laravel恐怕CodeIgniter那样完全成熟的框架。

23. PHP Geo – 地理地方定位库

phpgeo是多少个简短的库,用于统计地理坐标之间高精度间距。比方:

use Location/Coordinate;
use Location/Distance/Vincenty;

$coordinate1 = new Coordinate(19.820664, -155.468066); 
// Mauna Kea Summit 茂纳凯亚峰
$coordinate2 = new Coordinate(20.709722, -156.253333); 
// Haleakala Summit

$calculator = new Vincenty();
$distance = $calculator->getDistance($coordinate1, $coordinate2); 
// returns 128130.850 (meters; ≈128 kilometers)

它就要运用地理地点数据的app里精美术专门的职业作。你能够试译 HTML5 Location
API,雅虎的API(或二者都用,大家在weather web app
tutorial中如此做了),来获得坐标。

require '../ham/ham.php';$app = new Ham('example');$app-config_from_file('settings.php');$app-route('/pork', function($app) { return "Delicious pork.";});$hello = function($app, $name='world') { return $app-render('hello.html', array( 'name' = $name ));};$app-route('/hello/string', $hello);$app-route('/', $hello);$app-run();

9. Requests – 简单HTTP请求

Requests是五个简化HTTP央浼的库。要是你和自个儿同一,大概平昔都记不住传递给Curl的丰富多彩的参数,那么它就是为你准备的:

$headers = array('Accept' => 'application/json');  $options = array('auth' => array('user', 'pass'));  $request = Requests::get('https://api.github.com/gists', $headers, $options);     var_dump($request->status_code);  // int(200)     var_dump($request->headers['content-type']);  // string(31) "application/json; charset=utf-8"     var_dump($request->body);  // string(26891) "[…]"

借助那几个库,你能够发送HEAD、GET、POST、PUT、DELTE和PATCH
HTTP央浼,你能够透过数组添Gavin件和参数,并且能够访谈具备相应数据。

16. Faker – 假数据生成器

Faker
是一个为您生成假数据的PHP库。当你供给填写二个测量试验数据库,或为你的web应用生成测验数据时,它能派上用项。它也非常轻巧使用:

//引用Faker 自动加载器
require_once '/path/to/Faker/src/autoload.php';
//使用工厂创建来创建一个Faker\Generator实例
$faker = Faker\Factory::create();//通过访问属性生成假数据
echo $faker->name; // 'Lucy Cechtelar';
echo $faker->address; // "426 Jordy Lodge // Cartwrightshire, SC 88120-6700"
echo $faker->text; // Sint velit eveniet. Rerum atque repellat voluptatem quia ...

设若您世襲访谈对象属性,它将世袭回来随机生成的数码。

6. Snappy – 快照/PDF库

Snappy是三个PHP5库,可以转换快速照相、UEvoqueL、HTML、PDF。它依附于wkhtmltopdf binary(在Linux,Windows和OSX上都可用)。你能够像这样使用它们:

require_once '/path/to/snappy/src/autoload.php'; 

use Knp/Snappy/Pdf; 

//通过wkhtmltopdf binary路径初始化库
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf'); 

//通过把Content-type头设置为pdf来在浏览器中展示pdf

header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"'); 

echo $snappy->getOutput('http://www.github.com');

要静心,你的主机提供商大概分化意调用外界二进制造进度序。

您也足以定制来内定HTTP方法和运用正则表明式作为路径。

8. Underscore – PHP的工具腰带

Underscore是原始Underscore.js的三个接口 –
Javascript应用的工具腰带。PHP版本未有令人悲从当中来,并且帮助了差不离具有原生功效。下边是有的例证:

__::each(array(1, 2, 3), function($num) { echo $num . ','; }); // 1,2,3,     $multiplier = 2;  __::each(array(1, 2, 3), function($num, $index) use ($multiplier) {    echo $index . '=' . ($num * $multiplier) . ',';  });  // prints: 0=2,1=4,2=6,     __::reduce(array(1, 2, 3), function($memo, $num) { return $memo + $num; }, 0); // 6     __::find(array(1, 2, 3, 4), function($num) { return $num % 2 === 0; }); // 2     __::filter(array(1, 2, 3, 4), function($num) { return $num % 2 === 0; }); // array(2, 4)

本条库也补助链式语法,那使得它更压实劲。

14. Validation – 输入验证引擎

金沙糖果派对2015cc,Validation 声称是PHP库里最精锐的求证引擎。不过,它能名符其实吗?看上面:

use Respect\Validation\Validator as v; 
//简单验证
$number = 123;
v::numeric()->validate($number); //true //链式验证
$usernameValidator = v::alnum()->noWhitespace()->length(1,15);
$usernameValidator->validate('alganet'); //true //验证对象属性
$user = new stdClass;$user->name = 'Alexandre';
$user->birthdate = '1987-07-01'; //在一个简单链中验证他的属性
$userValidator = v::attribute('name', v::string()->length(1,32)) 
               ->attribute('birthdate', v::date()->minimumAge(18)); 
$userValidator->validate($user); //true

你能够透过那个库验证你的表单或别的顾客提交的多寡。除外,它放到了点不清校验,抛出特别和定制错误音信。

14. Validation – 输入验证引擎

Validation 声称是PHPCurry最精锐的印证引擎。可是,它能名实相副吗?看下边:

use Respect/Validation/Validator as v; 

//简单验证
$number = 123;
v::numeric()->validate($number); 
//true 

//链式验证
$usernameValidator = v::alnum()->noWhitespace()->length(1,15);
$usernameValidator->validate('alganet'); 
//true 

//验证对象属性
$user = new stdClass;
$user->name = 'Alexandre';
$user->birthdate = '1987-07-01'; 

//在一个简单链中验证他的属性
$userValidator = v::attribute('name', v::string()->length(1,32))
                  ->attribute('birthdate', v::date()->minimumAge(18)); 

$userValidator->validate($user); 
//true

您能够由此这么些库验证你的表单或其余顾客提交的多少。除却,它放到了重重校验,抛出相当和定制错误新闻。

因为它缺少文书档案,所以您不能不阅读源码来获知它扶助的具备参数。11.
Goutte:Web抓取库
Goutte是八个抓取网址和提取数额的库。它提供了多个平淡的API,那使得从远程页面上采撷特定成分变得轻松。

6. Snappy – 快照/PDF库

Snappy是五个PHP5库,能够扭转快速照相、U讴歌MDXL、HTML、PDF。它依附于wkhtmltopdf
binary(在Linux,Windows和OSX上都可用)。你能够像那样使用它们:

require_once '/path/to/snappy/src/autoload.php';     use Knp\Snappy\Pdf;     //通过wkhtmltopdf binary路径初始化库  $snappy = new Pdf('/usr/local/bin/wkhtmltopdf');     //通过把Content-type头设置为pdf来在浏览器中展示pdf     header('Content-Type: application/pdf');  header('Content-Disposition: attachment; filename="file.pdf"');      echo $snappy->getOutput('http://www.github.com');

要记得,你的主机提供商或然不一致敬调用外界二进制造进度序。

17. Mustache.php – 高贵模板库

Mustache是一款流行的模板语言,实际已经在各样编制程序语言中获得落到实处。使用它,你能够在顾客端或服务段重用模板。
正如您猜得那样,Mustache.php 是利用PHP实现的。

$m = new Mustache_Engine;
echo $m->render('Hello {{planet}}', array('planet' => 'World!')); // "Hello World!"

提出看一下官网Mustache docs 查看更加多高级的例证。

22. ColorJizz-PHP – 颜色操控库

ColorJizz是一个简短的库,依靠它你能够调换不一样的水彩格式,况且做简单的水彩运算

use MischiefCollective/ColorJizz/Formats/Hex;

$red_hex = new Hex(0xFF0000);
$red_cmyk = $hex->toCMYK();
echo $red_cmyk; 
// 0,1,1,0

echo Hex::fromString('red')->hue(-20)->greyscale(); 
// 555555

它早就支撑并且能够操控全体主流颜色格式了

借使您的网址允许顾客提交 HTML
代码,不校订就显得代码的话,那那个时候正是用那些库的时候了。22.
ColorJizz-PHP:颜色操控库
ColorJizz是二个轻便易行的库,依靠它你能够转移不一样的颜料格式,况且做轻巧的颜料运算

用作一个PHP开采者,未来是多个令人激动的时刻。每一日有数以百计立见成效的库分发出来,在Github上相当轻巧觉察和平运动用这几个库。上面是自个儿一度遭受过最酷的二十多少个库。你最欢娱的库未有在此个列表里面?这就在两道三科中分享呢!

19. Omnipay – 支付管理库

Omnipay是叁个PHP支付管理库。它有一个鲜惠氏(WYETH卡塔尔(KaricareState of Qatar致的API,並且协理数拾一个网关。使用那几个库,你仅仅需求上学八个API和处理百废待举的花费微电脑。上面是二个例子:

use Omnipay\CreditCard;use Omnipay\GatewayFactory;$gateway = GatewayFactory::create('Stripe');$gateway->setApiKey('abc123');$formData = ['number' => '4111111111111111', 'expiryMonth' => 6, 'expiryYear' => 2016];$response = $gateway->purchase(['amount' => 1000, 'card' => $formData]);
if ($response->isSuccessful()) {  
   //支付成功:更新数据库 
   print_r($response);
} else if ($response->isRedirect()) {  
   //跳转到异地支付网关 
   $response->redirect();
} else {  
   //支付失败:向客户显示信息 
   exit($response->getMessage());
}

动用同一一致的API,能够十分轻便地支撑种种开采微处理机,或在急需时开展切换。

12. Carbon – DateTime 库

Carbon 是 DateTime API 的三个简约扩充。

printf("Right now is %s", Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver'));

$tomorrow = Carbon::now()->addDay();
$lastWeek = Carbon::now()->subWeek();
$nextSummerOlympics = Carbon::createFromDate(2012)->addYears(4);

$officialDate = Carbon::now()->toRFC2822String();

$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;

$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');

$endOfWorld = Carbon::createFromDate(2012, 12, 21, 'GMT');

//总是以UTC对比
if (Carbon::now()->gte($endOfWorld)) {
    die();
}

if (Carbon::now()->isWeekend()) {
    echo 'Party!';
}

echo Carbon::now()->subMinutes(2)->diffForHumans(); 
// '2分钟之前'

当命令行里产生极其时,那个库抛出特别,所以你能够即时对之做出反应。它也得以经过管道令你八个发令的输出作为另一个限令的输入,来促成更加强的圆滑。原著链接:tutorialzine
/ 翻译: 伯乐在线 – 贾朝藤

7. Idiorm – 轻量级ORM库

Idiorm是私人商品房在此之前在本网址教程中用过最喜爱的一款。它是一款轻量级的ORM库,一个确立在PDO之上的PHP5查询结构器。凭仗它,你能够淡忘怎么下笔没有味道的SQL:

$user = ORM::for_table('user')      ->where_equal('username', 'j4mie')      ->find_one();     $user->first_name = 'Jamie';  $user->save();     $tweets = ORM::for_table('tweet')      ->select('tweet.*')      ->join('user', array(          'user.id', '=', 'tweet.user_id'      ))      ->where_equal('user.username', 'j4mie')      ->find_many();     foreach ($tweets as $tweet) {      echo $tweet->text;  }

Idiorm有一个姐妹库叫Paris,Paris是二个基于Idiorm的Active Record达成。

4. Assetic – 资源管理

Assetic是叁个PHP的财富管理框架,用于归拢和减小了CSS/JS财富。下边是例证。

use Assetic\Asset\AssetCollection;
use Assetic\Asset\FileAsset;
use Assetic\Asset\GlobAsset;
$js = new AssetCollection(
      array( 
      new GlobAsset('/path/to/js/*'), 
      new FileAsset('/path/to/another.js'),
      )
);
//当资源被输出时,代码会被合并
echo $js->dump();

以这种艺术合併能源是三个好主意,因为它能够加快站点。不唯有总下载量减小了,也肃清了大量无需的HTTP央求(那是最影响页面加载时间的两件事卡塔尔国

作为三个PHP开采者,现在是贰个令人激动的任何时候。每日有不可揣摸一蹴而就的库分发出来,在Github上相当的轻易开掘和接纳那一个库。下边是本身曾经境遇过最酷的22个库。你最赏识的库未有在这里个列表里面?这就在商酌中享受呢!

要记得,你的主机提供商恐怕区别意调用外界二进制造进程序。7.
Idiorm:轻量级ORM库
它是一款轻量级的ORM库,四个确立在PDO之上的PHP5查询结构器。依据它,你能够淡忘怎么下笔没味的SQL:

4. Assetic – 能源管理

Assetic是四个PHP的财富管理框架,用于合併和减小了CSS/JS能源。上边是例证。

use Assetic\Asset\AssetCollection;  use Assetic\Asset\FileAsset;  use Assetic\Asset\GlobAsset;     $js = new AssetCollection(array(      new GlobAsset('/path/to/js/*'),      new FileAsset('/path/to/another.js'),  ));     //当资源被输出时,代码会被合并  echo $js->dump();

以这种方式合併能源是三个好主意,因为它能够加速站点。不仅总下载量减小了,也消释了汪洋不须求的HTTP央求(这是最影响页面加载时间的两件事卡塔尔(قطر‎

12. Carbon – DateTime 库

Carbon 是 DateTime API 的多个回顾扩展。

printf("Right now is %s", Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver'));
$tomorrow = Carbon::now()->addDay();
$lastWeek = Carbon::now()->subWeek();
$nextSummerOlympics = Carbon::createFromDate(2012)->addYears(4);
$officialDate = Carbon::now()->toRFC2822String();
$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;
$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');
$endOfWorld = Carbon::createFromDate(2012, 12, 21, 'GMT');

//总是以UTC对比
if (Carbon::now()->gte($endOfWorld)) {
 die();
}
if (Carbon::now()->isWeekend()) {
 echo 'Party!';
}
echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2分钟之前'

18. Gaufrette – 文件系统抽象层

Gaufrette是贰个PHP5库,提供了二个文件系统的抽象层。它使得以同等形式操控当羊眼半夏件,FTP服务器,亚马逊(Amazon卡塔尔(قطر‎S3或越多操作变为大概。它同意你付出顺序时,不用精通现在你将怎么访问你的文书。

use Gaufrette/Filesystem;
use Gaufrette/Adapter/Ftp as FtpAdapter;
use Gaufrette/Adapter/Local as LocalAdapter; 

//本地文件:
$adapter = new LocalAdapter('/var/media'); 

//可选地使用一个FTP适配器
// $ftp = new FtpAdapter($path, $host, $username, $password, $port); 

//初始化文件系统
$filesystem = new Filesystem($adapter); 

//使用它
$content = $filesystem->read('myFile');
$content = 'Hello I am the new content';
$filesystem->write('myFile', $content);

也可能有缓存和内部存储器适配器,何况随着将会扩张更加的多适配器。

它曾经支持而且能够操控全数主流颜色格式了23. PHP
Geo:地理地点定位库
phpgeo是三个轻巧的库,用于总括地理坐标之间高精度间距。譬喻:

12. Carbon – DateTime 库

Carbon 是 DateTime API 的三个简便扩张。

printf("Right now is %s", Carbon::now()->toDateTimeString());  printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver'));     $tomorrow = Carbon::now()->addDay();  $lastWeek = Carbon::now()->subWeek();  $nextSummerOlympics = Carbon::createFromDate(2012)->addYears(4);     $officialDate = Carbon::now()->toRFC2822String();     $howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;     $noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');     $endOfWorld = Carbon::createFromDate(2012, 12, 21, 'GMT');     //总是以UTC对比  if (Carbon::now()->gte($endOfWorld)) {      die();  }     if (Carbon::now()->isWeekend()) {      echo 'Party!';  }     echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2分钟之前'

11. Goutte – Web抓取库

Goutte是三个抓取网址和提取数额的库。它提供了多少个雅淡的API,那使得从远程页面上采撷特定成分变得轻松。

require_once ‘/path/to/goutte.phar’; use Goutte\Client; $client = new
Client();$crawler = $client->request(‘GET’,
‘http://www.symfony-project.org/’卡塔尔国;
//点击链接$link = $crawler->selectLink(‘Plugins’卡塔尔国->link(卡塔尔(قطر‎;$crawler
= $client->click($link卡塔尔国; //使用二个类CSS语法提取数额$t =
$crawler->filter(‘#data’)->text(); echo “Here is the text: $t”;

17. Mustache.php – 文雅模板库

Mustache是一款流行的模版语言,实际已经在各样编制程序语言中得到贯彻。使用它,你能够在顾客端或服务段重用模板。
正如您猜得那样,Mustache.php 是使用PHP实现的。

$m = new Mustache_Engine;
echo $m->render('Hello {{planet}}', array('planet' => 'World!')); 
// "Hello World!"

提出看一下官方网站Mustache
docs 查看越多高等的例证。

ImageWorkshop被支付用于使部分PHP中最通用的管理图片的案例简化,如若你供给有的更加强硬的东西,你应有看下Imagine
library!6.
Snappy:快照/PDF库
Snappy是二个PHP5库,能够扭转快速照相、U奥德赛L、HTML、PDF。它依赖于wkhtmltopdf
binary。你可以像这么使用它们:

2. 克莱因 – PHP快如雷暴的路由

Klein是另一款针对PHP5.3+版本的轻量级路由库。固然它有部分比Dispatch冗长的语法,但它十分快。那有一个例子:

respond('/[:name]', function ($request) {      echo 'Hello ' . $request->name;  });

你也得以定制来内定HTTP方法和行使正则表明式作为路径。

respond('GET', '/posts', $callback);  respond('POST', '/posts/create', $callback);  respond('PUT', '/posts/[i:id]', $callback);  respond('DELETE', '/posts/[i:id]', $callback);     //匹配多种请求方法:  respond(array('POST','GET'), $route, $callback);     //你或许也想在相同的地方处理请求  respond('/posts/[create|edit:action] /[i:id] ', function ($request, $response) {      switch ($request->action) {          // do something      }  });

对此迷你项目来讲那是很棒的,但当你把贰个像这么的库用于大型应用时,你只可以服从规矩,因为你的代码或许不慢就变得不得维护。所以你最佳搭配一个像Laravel只怕CodeIgniter那样完全成熟的框架。

5. ImageWorkshop – 带层的图片管理

ImageWorkshop是三个让你操控带层图片的开源库。凭仗它你能够重定义尺寸、裁剪、制作缩略图、打水印或做越来越多专业。下边是三个例子:

// 从norway.jpg图片初始化norway层
$norwayLayer = ImageWorkshop::initFromPath('/path/tonorway.jpg'); 
// 从watermark.png图片初始化watermark层(水印层)
$watermarkLayer = ImageWorkshop::initFromPath('/path/towatermark.png');
// 这是生成的图片!
$image = $norwayLayer->getResult();
header('Content-type: image/jpeg');
// We choose to show a JPG with a quality of 95%
imagejpeg($image, null, 95); 
exit;

ImageWorkshop被开荒用于使有些PHP中最通用的拍卖图片的案例简化,假令你须要一些更加强硬的东西,你应有看下Imagine
library!

16. Faker – 假数据生成器

Faker 是二个为你生成假数据的PHP库。当您需求填写二个测量试验数据库,或为你的web应用生成测量试验数据时,它能派上用途。它也非常轻巧使用:

//引用Faker 自动加载器
require_once '/path/to/Faker/src/autoload.php';

//使用工厂创建来创建一个Faker/Generator实例
$faker = Faker/Factory::create();

//通过访问属性生成假数据
echo $faker->name; 
// 'Lucy Cechtelar';

echo $faker->address;

// "426 Jordy Lodge

// Cartwrightshire, SC 88120-6700"

echo $faker->text;

// Sint velit eveniet. Rerum atque repellat voluptatem quia ...

借让你继续访问对象属性,它将继续回到随机生成的数码。

$user = ORM::for_table('user') -where_equal('username', 'j4mie') -find_one();$user-first_name = 'Jamie';$user-save();$tweets = ORM::for_table('tweet') -select('tweet.*') -join('user', array( 'user.id', '=', 'tweet.user_id' )) -where_equal('user.username', 'j4mie') -find_many();foreach ($tweets as $tweet) { echo $tweet-text;}

15. Filterus – 过滤库

Filterus是另一个过滤库,但它不但可以证实,也能够过滤相配预设形式的出口。上面是叁个例子:

$f = Filter::factory('string,max:5');  $str = 'This is a test string';     $f->validate($str); // false  $f->filter($str); // 'This '

Filterus有广大内建立模型式,援救链式用法,以致能够用独立的注脚法规去验证数组元素。

21. HTMLPurifier – HTML XSS 防护

HTMLPurifier是一个HTML过滤库,通过有力的白名单和聚合解析,珍爱你代码隔断XSS攻击。它也保障输出标识切合标准。
(源码在github上卡塔尔

require_once '/path/to/HTMLPurifier.auto.php';
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);

假设您的网址允许客户提交 HTML
代码,不修正就展示代码的话,这这个时候正是用这些库的时候了。

21. HTMLPurifier – HTML XSS 防护

HTMLPurifier是二个HTML过滤库,通过有力的白名单和聚合深入分析,保护你代码隔断XSS攻击。它也保证输出标识契合规范。 (源码在github上)

require_once '/path/to/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);

纵然您的网址允许顾客提交 HTML
代码,不校订就体现代码的话,那那时候便是用那几个库的时候了。

$request = new Buzz\Message\Request('HEAD', '/', '');$response = new Buzz\Message\Response();$client = new Buzz\Client\FileGetContents();$client-send($request, $response);echo $request;echo $response;

1. Dispatch – 微框架

Dispatch是叁个PHP小框架。它并从未给你完整的MVC设置,但您能够定义U福睿斯L法则和措施,以便越来越好集体应用程序。那对API、简单的站点或原型以来是圆满的。

//包含库  include 'dispatch.php';     // 定义你的路由  get('/greet', function () {    //渲染视图      render('greet-form');  });     //post处理  post('/greet', function () {      $name = from($_POST, 'name');    // render a view while passing some locals      render('greet-show', array('name' => $name));  });     // serve your site  dispatch();

 

您能够相配特定类型的HTTP伏乞和路线,渲染视图或做越多事情。尽管您合併Dispatch和别的框架,那你就能够具备一个一定苍劲并且轻量级的次第!

3. Ham – 带缓存的路由库

Ham也是一款轻量级的路由框架,但是它接纳缓存以至得到了越来越快的速度。它经过把此外I/O相关的事物缓存进XCache/APC。上面是一个例证:

require '../ham/ham.php';
$app = new Ham('example');
$app->config_from_file('settings.php');
$app->route('/pork', function($app) 
{
      return "Delicious pork.";
});
$hello = function($app, $name='world')
{
      return $app->render('hello.html', array( 'name' => $name ));
};
$app->route('/hello/<string>', $hello);
$app->route('/', $hello);$app->run();

其一库必要您最少安装了XCacheAPC中间的八个,那可能代表,在大部主机提供商提供的主机上它也许用持续。不过假若你持有三个安装它们其一的主机,恐怕您能够操控你的web服务器,你应当尝试那款最快的框架。

1. Dispatch – 微框架

Dispatch是一个PHP小框架。它并不曾给你完整的MVC设置,但您可以定义UXC60L法规和格局,以便越来越好社团应用程序。那对API、简单的站点或原型以来是宏观的。

//包含库
include 'dispatch.php';

// 定义你的路由
get('/greet', function () {

//渲染视图
    render('greet-form');
});

//post处理
post('/greet', function () {
    $name = from($_POST, 'name');

// render a view while passing some locals
    render('greet-show', array('name' => $name));
});

// serve your site
dispatch();

您能够相配特定类型的HTTP伏乞和路线,渲染视图或做更加的多事情。假设你合并Dispatch和任何框架,那您就足以具有八个一定苍劲并且轻量级的前后相继!

如果您世襲拜谒对象属性,它将继续回来随机变化的数量。17.
Mustache.php:高贵模板库
Mustache是一款流行的模板语言,实际已经在各个编程语言中得到实现。使用它,你能够在顾客端或服务段重用模板。
正如你猜得那样,Mustache.php 是利用PHP完毕的。

11. Goutte – Web抓取库

Goutte是多个抓取网址和提取数据的库。它提供了贰个雅淡的API,那使得从远程页面上采摘特定成分变得轻易。

require_once '/path/to/goutte.phar';     use Goutte\Client;     $client = new Client();  $crawler = $client->request('GET', 'http://www.symfony-project.org/');      //点击链接  $link = $crawler->selectLink('Plugins')->link();  $crawler = $client->click($link);     //使用一个类CSS语法提取数据  $t = $crawler->filter('#data')->text();     echo "Here is the text: $t";

1. Dispatch – 微框架

Dispatch是一个PHP小框架。它并未给你完全的MVC设置,但您能够定义UHuracánL法规和办法,以便更加好团队应用程序。那对API、轻易的站点或原型以来是完美的。

//包含库
include 'dispatch.php';
// 定义你的路由
get('/greet', function () 
{
     //渲染视图 
     render('greet-form');
});
//post处理
post('/greet', function () 
{ 
     $name = from($_POST, 'name'); 
     // render a view while passing some locals 
     render('greet-show', array('name' => $name));
});
// serve your site
dispatch();

你能够宽容特定类型的HTTP诉求和渠道,渲染视图或做越来越多事情。假如你归并Dispatch和别的框架,那您就足以具备三个一定苍劲並且轻量级的次序!

admin

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注