作為一個PHP開發者,現在是一個令人興奮的時刻。每天有許多多有用的函式庫分發出來,在Github上很容易發現和使用這些函式庫。下面是我曾經遇過最酷的24個函式庫。你最喜歡的庫沒有在這個清單裡面?那就在評論中分享吧!
1. Dispatch – 微框架
Dispatch是一個PHP小框架。它並沒有給你完整的MVC設置,但你可以定義URL規則和方法,以便更好地組織應用程式。這對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和其他框架,那麼你就可以擁有一個相當強大且輕量級的程式!
2. Klein – 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這樣完全成熟的框架。
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();</string>
這個函式庫要求你至少安裝了XCache和APC其中的一個,這可能意味著,在大多數主機提供者提供的主機上它可能用不了。但如果你擁有一個安裝它們其一的主機,或者你可以操控你的web伺服器,你應該嘗試這款最快的框架。
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請求(這是最影響頁面加載時間的兩件事)
5. ImageWorkshop – 帶層的圖片處理
ImageWorkshop是一個讓你操控有層圖片的開源庫。借助它你可以重新定義尺寸、裁剪、製作縮圖、打浮水印或做更多事情。以下是一個例子:
// 从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;
ImageWorkshop被開發用於使一些PHP中最通用的處理圖片的案例簡化,如果你需要一些更強大的東西,你應該看下Imagine library!
6. Snappy – 快照/PDF庫
Snappy是一個PHP5庫,可以產生快照、URL、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');
要注意,你的主機提供者可能不允許呼叫外部二進位程式。
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實作。
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)
這個函式庫也支援鍊式語法,這使得它更強大。
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請求,你可以透過陣列新增檔案和參數,並且可以存取所有對應資料。
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;
因為它缺乏文檔,所以你不得不閱讀源碼來獲知它支援的所有參數。
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";
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分钟之前'
13. Ubench – 微型基準庫
Ubench 是用於評測PHP程式碼的微型函式庫,可監控(程式碼)執行時間和記憶體使用率。以下是範例:
use Ubench/Ubench; $bench = new Ubench; $bench->start(); //执行一些代码 $bench->end(); //获取执行消耗时间和内存 echo $bench->getTime(); // 156ms or 1.123s echo $bench->getTime(true); // elapsed microtime in float echo $bench->getTime(false, '%d%s'); // 156ms or 1s echo $bench->getMemoryPeak(); // 152B or 90.00Kb or 15.23Mb echo $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
(僅)在開發時運行這些校驗是一個好主意。
14. Validation – 輸入驗證引擎
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
你可以通过这个库验证你的表单或其他用户提交的数据。除此之外,它内置了很多校验,抛出异常和定制错误信息。
15. Filterus – 过滤库
Filterus是另一个过滤库,但它不仅仅可以验证,也可以过滤匹配预设模式的输出。下面是一个例子:
$f = Filter::factory('string,max:5'); $str = 'This is a test string'; $f->validate($str); // false $f->filter($str); // 'This '
Filterus有很多内建模式,支持链式用法,甚至可以用独立的验证规则去验证数组元素。
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 ...
只要你继续访问对象属性,它将继续返回随机生成的数据。
17. Mustache.php – 优雅模板库
Mustache是一款流行的模板语言,实际已经在各种编程语言中得到实现。使用它,你可以在客户端或服务段重用模板。 正如你猜得那样,Mustache.php 是使用PHP实现的。
$m = new Mustache_Engine; echo $m->render('Hello {{planet}}', array('planet' => 'World!')); // "Hello World!"
建议看一下官方网站Mustache docs 查看更多高级的例子。
18. Gaufrette – 文件系统抽象层
Gaufrette是一个PHP5库,提供了一个文件系统的抽象层。它使得以相同方式操控本地文件,FTP服务器,亚马逊 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);
也有缓存和内存适配器,并且随后将会增加更多适配器。
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,可以很容易地支持多种支付处理器,或在需要时进行切换。
20. Upload – 处理文件上传
Upload是一个简化文件上传和验证的库。上传表单时,这个库会校验文件类型和尺寸。
$storage = new /Upload/Storage/FileSystem('/path/to/directory'); $file = new /Upload/File('foo', $storage); //验证文件上传 $file->addValidations(array( //确保文件类型是"image/png" new /Upload/Validation/Mimetype('image/png'), //确保文件不超过5M(使用"B","K","M"或者"G") new /Upload/Validation/Size('5M') )); //试图上传文件 try { //成功 $file->upload(); } catch (/Exception $e) { //失败! $errors = $file->getErrors(); }
它将减少不少乏味的代码。
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 代码,不修改就展示代码的话,那这时候就是用这个库的时候了。
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
它已经支持并且可以操控所有主流颜色格式了
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中这样做了),来获取坐标。
24. ShellWrap – 优美的命令行包装器
借助 ShellWrap 库,你可以在PHP代码里使用强大的 Linux/Unix 命令行工具。
require 'ShellWrap.php'; use /MrRio/ShellWrap as sh; //列出当前文件下的所有文件 echo sh::ls(); //检出一个git分支 sh::git('checkout', 'master'); //你也可以通过管道把一个命令的输出用户另一个命令 //下面通过curl跟踪位置,然后通过grep过滤’html’管道来下载example.com网站 echo sh::grep('html', sh::curl('http://example.com', array( 'location' => true ))); //新建一个文件 sh::touch('file.html'); //移除文件 sh::rm('file.html'); //再次移除文件(这次失败了,然后因为文件不存在而抛出异常) try { sh::rm('file.html'); } catch (Exception $e) { echo 'Caught failing sh::rm() call'; }
当命令行里发生异常时,这个库抛出异常,所以你可以及时对之做出反应。它也可以通过管道让你一个命令的输出作为另一个命令的输入,来实现更强的灵活性。
以上就介绍了24 个你应该了解的 PHP 库,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP在數據庫操作和服務器端邏輯處理中使用MySQLi和PDO擴展進行數據庫交互,並通過會話管理等功能處理服務器端邏輯。 1)使用MySQLi或PDO連接數據庫,執行SQL查詢。 2)通過會話管理等功能處理HTTP請求和用戶狀態。 3)使用事務確保數據庫操作的原子性。 4)防止SQL注入,使用異常處理和關閉連接來調試。 5)通過索引和緩存優化性能,編寫可讀性高的代碼並進行錯誤處理。

在PHP中使用預處理語句和PDO可以有效防範SQL注入攻擊。 1)使用PDO連接數據庫並設置錯誤模式。 2)通過prepare方法創建預處理語句,使用佔位符和execute方法傳遞數據。 3)處理查詢結果並確保代碼的安全性和性能。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP可以輕鬆創建互動網頁內容。 1)通過嵌入HTML動態生成內容,根據用戶輸入或數據庫數據實時展示。 2)處理表單提交並生成動態輸出,確保使用htmlspecialchars防XSS。 3)結合MySQL創建用戶註冊系統,使用password_hash和預處理語句增強安全性。掌握這些技巧將提升Web開發效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

Atom編輯器mac版下載
最受歡迎的的開源編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

禪工作室 13.0.1
強大的PHP整合開發環境

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中