轉自: https://my.oschina.net/editorial-story/blog/882780php
PHP 是一種通用開源腳本語言。語法吸取了 C 語言、Java 和 Perl 的特色,利於學習,使用普遍,主要適用於 Web 開發領域,是大多數後端開發者的首選。PHP 做爲最受歡迎的編程語言之一,常常出如今各大語言之戰中,但到底誰是最好的編程語言呢?這不是文章要討論的內容:)css
本文從衆多 PHP 開源庫中選出了幾款實用有趣的工具,但願對你的學習工做有幫助。html
Monolog 是一種支持 PHP 5.3+ 以上的日誌記錄工具。併爲 Symfony2 默認支持。node
示例代碼:git
<?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');
PHPExcel 是一個用來讀寫 Excel 2007 (OpenXML) 文件的 PHP 庫。github
示例代碼:web
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);
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'
Opauth 是一個開源的 PHP 庫,提供了 OAuth 認證的支持,讓你無需關注不一樣 Provider 之間的差異,提供統一標準的訪問方法。目前支持 Google、Twitter 和 Facebook,其餘的 Provider 支持也將陸續提供。同時也支持處理任何 OAuth 認證提供方。編程
Whoops 適用於PHP環境的錯誤捕獲與調試PHP庫; whoops很是容易使用,它提供stack-based錯誤捕獲及超美觀的錯誤查看。
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 } ?>
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();
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>
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'));
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());
PHPMailer是一個用於發送電子郵件的PHP函數包。它提供的功能包括:
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
Eden是一個開源且免費的PHP快速開發類庫。它包含不少組件用來自動加載、事件驅動、文檔系統、緩存、模板、國際化、數據庫、web服務、支付網關、裝載和雲服務技術。
FPDF這個PHP Class容許你採用純PHP(更確切地說就是不須要使用PDFlib)來生成PDF文件。
它所具備的特色包括:
示例代碼:
//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);
PHP Error 是一個開源的 PHP 庫,用於轉換標準的 PHP 錯誤信息,主要用於開發過程當中的調試。PHP Error 緊密集成到 PHP 環境中,顯示帶語法高亮的錯誤提示。
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()); ?>
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) { } }
Hoa 是模塊化,可擴展和結構化的 PHP 庫集合。Hoa 的目標是搭建工業和研究之間的橋樑。
能夠經過組合和擴展來 Hoa 建立本身的應用和庫。