转自: https://my.oschina.net/editorial-story/blog/882780

PHP 是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,利于学习,使用广泛,主要适用于 Web 开发领域,是大多数后端开发者的首选。PHP 作为最受欢迎的编程语言之一,经常出现在各大语言之战中,但到底谁是最好的编程语言呢?这不是文章要讨论的内容:)

本文从众多 PHP 开源库中选出了几款实用有趣的工具,希望对你的学习工作有帮助。

1、PHP 日志工具 Monolog

Monolog 是一种支持 PHP 5.3+ 以上的日志记录工具。并为 Symfony2 默认支持。

示例代码:

<?php

use Monolog\Logger;
use Monolog\Handler\StreamHandler; // create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING)); // add records to the log
$log->addWarning('Foo');
$log->addError('Bar');

2、Excel 操作库 PHPExcel

PHPExcel 是一个用来读写 Excel 2007 (OpenXML) 文件的 PHP 库。

示例代码:

include 'PHPExcel/IOFactory.php';

$inputFileName = './sampleData/example1.xls';

echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' using IOFactory';
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName); $sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
var_dump($sheetData);

3、PHP 机器学习库 PHP-ML

PHP-ml 是 PHP 的机器学习库。同时包含算法,交叉验证,神经网络,预处理,特征提取等。

示例代码:

use Phpml\Classification\KNearestNeighbors;

$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];
$labels = ['a', 'a', 'a', 'b', 'b', 'b']; $classifier = new KNearestNeighbors();
$classifier->train($samples, $labels); $classifier->predict([3, 2]); 
// return 'b'

4、PHP 的 OAuth 库 Opauth

Opauth 是一个开源的 PHP 库,提供了 OAuth 认证的支持,让你无需关注不同 Provider 之间的差别,提供统一标准的访问方法。目前支持 Google、Twitter 和 Facebook,其他的 Provider 支持也将陆续提供。同时也支持处理任何 OAuth 认证提供方。

5、PHP 调试库 Whoops

Whoops 适用于PHP环境的错误捕获与调试PHP库; whoops非常容易使用,它提供stack-based错误捕获及超美观的错误查看。

6、PHP 缓存库 phpFastCache

phpFastCache 是一个开源的 PHP 缓存库,只提供一个简单的 PHP 文件,可方便集成到已有项目,支持多种缓存方法,包括:apc, memcache, memcached, wincache, files, pdo and mpdo。可通过简单的 API 来定义缓存的有效时间。

示例代码:

<?php
// In your config file
include("php_fast_cache.php");
// This is Optional Config only. You can skip these lines.
// phpFastCache support "apc", "memcache", "memcached", "wincache" ,"files", "pdo", "mpdo" and "xcache"
// You don't need to change your code when you change your caching system. Or simple keep it auto
phpFastCache::$storage = "auto";
// End Optionals // In your Class, Functions, PHP Pages
// try to get from Cache first.
$products = phpFastCache::get("products_page"); if($products == null) {
$products = YOUR DB QUERIES || GET_PRODUCTS_FUNCTION;
// set products in to cache in 600 seconds = 10 minutes
phpFastCache::set("products_page",$products,600);
} foreach($products as $product) {
// Output Your Contents HERE
}
?>

7、PHP 框架 Guzzle

Guzzle 是个 PHP 框架,解决了发送大量 HTTP 请求和创建 web 服务客户端的问题。它包括了创建坚实服务客户端的工具,包括:服务描述来定义 API 的输入和输出,通过分页资源实现资源迭代,尽可能高效的批量发送大量的请求。

示例代码:

$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.github.com/user', [
'auth' => ['user', 'pass']
]);
echo $res->getStatusCode();
// "200"
echo $res->getHeader('content-type');
// 'application/json; charset=utf8'
echo $res->getBody();
// {"type":"User"...' // Send an asynchronous request.
$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
$promise = $client->sendAsync($request)->then(function ($response) {
echo 'I completed! ' . $response->getBody();
});
$promise->wait();

8、CSS-JS合并/压缩 Munee

Munee是一个集图片尺寸调整、CSS-JS合并/压缩、缓存等功能于一身的PHP库。可以在服务器端和客户端缓存资源。它集成了PHP图片操作库Imagine来实现图片尺寸调整和剪切,之后进行缓存。

示例代码:

require 'vendor/autoload.php';
echo \Munee\Dispatcher::run(new \Munee\Request());
<!-- Combining two CSS files into one. -->
<link rel="stylesheet" href="/css/bootstrap.min.css, /css/demo.css"> <!-- Resizing image -->
<img src="/path/to/image.jpg?resize=width[100]height[100]exact[true]"> <!-- Files that need preprocessing are compiled automatically -->
<link rel="stylesheet" href="/css/demo.scss"> <!-- Minifying code -->
<script src="/js/script.js?minify=true"></script>

9、PHP 模板语言 Twig

Twig是一个灵活,快速,安全的PHP模板语言。它将模板编译成经过优化的原始PHP代码。Twig拥有一个Sandbox模型来检测不可信的模板代码。Twig由一个灵活的词法分析器和语法分析器组成,可以让开发人员定义自己的标签,过滤器并创建自己的DSL。

示例代码:

// Template HTML

<p>Welcome {{ name }}!</p>

// Rendering

require_once '/path/to/lib/Twig/Autoloader.php';
Twig_Autoloader::register(); $loader = new Twig_Loader_Filesystem('/path/to/templates');
$twig = new Twig_Environment($loader, array(
'cache' => '/path/to/compilation_cache',
)); echo $twig->render('index.html', array('name' => 'George'));

10、PHP 爬虫库 Goutte

Goutte 是一个抓取网站数据的 PHP 库。它提供了一个优雅的 API,这使得从远程页面上选择特定元素变得简单。

示例代码:

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

use Goutte\Client;

//发送请求
$client = new Client();
$crawler = $client->request('GET', 'http://www.oschina.net/'); //点击链接
$link = $crawler->selectLink('Plugins')->link();
$crawler = $client->click($link); //提交表单
$form = $crawler->selectButton('sign in')->form();
$crawler = $client->submit($form, array('signin[username]' => 'fabien', 'signin[password]' => 'xxxxxx')); //提取数据
$nodes = $crawler->filter('.error_list');
if ($nodes->count())
{
die(sprintf("Authentication error: %s\n", $nodes->text()));
} printf("Nb tasks: %d\n", $crawler->filter('#nb_tasks')->text());

11、PHP 邮件发送包 PHPMailer

PHPMailer是一个用于发送电子邮件的PHP函数包。它提供的功能包括:

  • 在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址
  • 支持多种邮件编码包括:8bit,base64,binary和quoted-printable
  • 支持SMTP验证
  • 支持冗余SMTP服务器
  • 支持带附件的邮件和Html格式的邮件
  • 自定义邮件头
  • 支持在邮件中嵌入图片
  • 调试灵活
  • 经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等
  • 可运行在任何平台之上

12、PHP 图表制作 pChart

pChart是一个基于GD library(图形处理函数库)开发的PHP图表制作开源项目。支持多种图表类型包括:

  • Line chart

  • Cubic curve chart

  • Plot chart

  • Bar chart

  • Filled line chart

  • Filled cubic curve chart

  • Pie chart

  • Radars chart

  • Limits chart

13、PHP 快速开发类库 Eden

Eden是一个开源且免费的PHP快速开发类库。它包含很多组件用来自动加载、事件驱动、文档系统、缓存、模板、国际化、数据库、web服务、支付网关、装载和云服务技术。

14、PHP 生成 PDF 的类 FPDF

FPDF这个PHP Class允许你采用纯PHP(更确切地说就是不需要使用PDFlib)来生成PDF文件。

它所具有的特点包括:

  • 可选择的unit大小,页面格式和页边 距;
  • 页眉和页脚管理;
  • 自动分页;
  • 自动换行与文本自动对齐;
  • 支持JPEG与PNG图片格式;
  • 支持着色和文件超链接;
  • 支持TrueType,Type1与 encoding;
  • 支持页面压缩。

示例代码:

//Determine a temporary file name in the current directory
$file = basename(tempnam('.', 'tmp'));
rename($file, $file.'.pdf');
$file .= '.pdf';
//Save PDF to file
$pdf->Output($file, 'F');
//Redirect
header('Location: '.$file);

15、PHP Error

PHP Error 是一个开源的 PHP 库,用于转换标准的 PHP 错误信息,主要用于开发过程中的调试。PHP Error 紧密集成到 PHP 环境中,显示带语法高亮的错误提示。

16、PHP 单元测试框架 SimpleTest

SimpleTest 是一个为PHP程序提供的单元测试的框架,包含一个内嵌的web浏览器用来测试PHP的Web网站。

示例代码:

 <?php
require_once('simpletest/unit_tester.php');
require_once('simpletest/reporter.php');
require_once('../classes/log.php'); class TestOfLogging extends UnitTestCase { function testCreatingNewFile() {
@unlink('/temp/test.log');
$log = new Log('/temp/test.log');
$this->assertFalse(file_exists('/temp/test.log'));
$log->message('Should write this to a file');
$this->assertTrue(file_exists('/temp/test.log'));
}
} $test = &new TestOfLogging();
$test->run(new HtmlReporter());
?>

17、PHP 的 WebSockets 开发包 PHP Ratchet

Ratchet 是一个松耦合的 PHP 库,提供了用于创建实时、双向客户端服务器 WebSockets 应用的支持。

示例代码:

<?php
namespace MyApp;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface; class Chat implements MessageComponentInterface {
public function onOpen(ConnectionInterface $conn) {
} public function onMessage(ConnectionInterface $from, $msg) {
} public function onClose(ConnectionInterface $conn) {
} public function onError(ConnectionInterface $conn, \Exception $e) {
}
}

18、模块化 PHP 库集合 Hoa

Hoa 是模块化,可扩展和结构化的 PHP 库集合。Hoa 的目标是搭建工业和研究之间的桥梁。

可以通过组合和扩展来 Hoa 创建自己的应用和库。

各种实用的 PHP 开源库推荐【转】的更多相关文章

  1. Github 上 36 个最实用的 Vue 开源库

    任何一个开发者,都是十分喜欢使用开源软件包的.因为它使开发工作变得更快速.高效.容易.如果没有开源软件包,开发工作将变得疲惫不堪,不断的重复造轮子! 下面整理了 Github 上 36 个实用的 Vu ...

  2. 27个提升效率的iOS开源库推荐

    DZNEmptyDataSet(UI,空表格视图解算器) PDTSimpleCalendar(UI,drop-in日历组件) MagicalRecord(实施活跃记录模式的Core Data助手) C ...

  3. 开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐!

    作者:编辑部的故事   <  开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐!   > 开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐! Tutoria ...

  4. 【开源库推荐】#3 Android EventBus的使用

    原文地址:[开源库推荐]#3 Android EventBus的使用 | Stars-One的杂货小窝 EventBus的Github Event bus for Android and Java t ...

  5. Java下好用的开源库推荐

    作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文想介绍下自己在Java下做开发使用到的一些开源的优秀编程库,会不定 ...

  6. 快快快!27个提升效率的iOS开源库推荐

    文章来源:http://www.csdn.net/article/2015-07-21/2825264-27-ios-open-source-libraries/1 我热爱开源,更喜爱那些花费宝贵的业 ...

  7. 快快快!27个提升效率的iOS开源库推荐(转)

    CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用.开发工具.移动游戏及引擎.智能硬件.物联网等方方面面.如果您想投稿.参与内容翻译工作,或寻求近匠报道,请发送 ...

  8. ios开发--27个提升效率的iOS开源库推荐

    超长慎入列表: DZNEmptyDataSet(UI,空表格视图解算器) PDTSimpleCalendar(UI,drop-in日历组件) MagicalRecord(实施活跃记录模式的Core D ...

  9. GitHub上那些值得一试的JAVA开源库--转

    原文地址:http://www.jianshu.com/p/ad40e6dd3789 作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,S ...

随机推荐

  1. sass变量的作用域

    嵌套规则内定义的变量只能在嵌套规则内使用(局部变量),不在嵌套规则内定义的变量则可在任何地方使用(全局变量). <div class="test">111111111& ...

  2. AtCoder Beginner Contest 126 解题报告

    突然6道题.有点慌.比赛写了五个.罚时爆炸.最后一个时间不太够+没敢写就放弃了. 两道题奇奇怪怪的WJ和20/20.今天的评测机是怎么了. A Changing a Character #includ ...

  3. 自定义注解-aop实现日志记录

    关于注解,平时接触的可不少,像是 @Controller.@Service.@Autowried 等等,不知道你是否有过这种疑惑,使用 @Service 注解的类成为我们的业务类,使用 @Contro ...

  4. python3 爬虫继续爬笔趣阁 ,,,,,,,

    学如逆水行舟,不进则退 今天想看小说..找了半天,没有资源.. 只能自己爬了 想了半天.,,,忘记了这个古老的技能 捡了一下 import requests from bs4 import Beaut ...

  5. ubuntu编译PCRE时出现 line 81: aclocal-1.14: command not found错误

    WARNING: 'aclocal-1.14' is missing on your system. You should only need it if you modified 'acinclud ...

  6. Linux 系统管理——磁盘管理及文件系统实例

    1.为主机新增两块30GB的SCSI硬盘 2.划分3个主分区,各5GB,剩余空间作为扩展分区 3.在扩展分区中建立2个逻辑分区,容量分别为2GB.10GB 4.将第一个逻辑分区的类型改为swap 5. ...

  7. P1913 L国的战斗之伞兵

    题目链接 P1913 L国的战斗之伞兵 思路 从无风点倒着dfs,本来是道大水题,结果输入的时候第二层循环打错了!手残打成i++ 代码 #include<iostream> #includ ...

  8. HEXO快速搭建自己的博客

    关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号 欢迎大家关注我的微信公众号:「醉翁猫咪」 很多人有自己的博客,那么你想要吗?利用Hexo就可以搭建专属自己 ...

  9. asdfo123是神!!!

      正常代码不写#define @zdx 平时刷题不写freopen @liuziwen 循环内部不写return 0 @asdfo123 主程序内不写char array @asdfo123 输出时 ...

  10. 移动端点击事件兼容问题,在pc端可以点,在手机上不可以点

    ms-click="showCodeExplain()" onClick="javascript:;" 在点击事件后面加上onClick="javas ...