30 کتابخانه PHP فوق العاده کاربردی
در این مطلب از داناپ یک سورپرایز فوق العاده برای توسعه دهندگان PHP داریم. طی یک سال گذشته یک سری از کتابخانه های PHP بیشتر مورد توجه بوده اند و در پروژه های بسیاری نیز استفاده شده اند.
این کتابخانه ها می توانند برای توسعه سریع در پروژه های PHP مورد استفاده قرار گیرند. بدون پرداختن به مقدمه بیشتر به سراغ معرفی این کتابخانه ها برویم :
1. کتابخانه Requests for PHP
این یک کتابخانه PHP فوق العاده برای ارسال درخواست های HTTP است که یک سری از متدها را در اختیار شما می گذارد تا بتوانید Header هایی را اضافه کنید و یا به یک سری از داده ها دسترسی پیدا کنید.
همچنین این کتابخانه بسیار تمیز بوده و برای استفاده از API ها مناسب می باشد. در ادامه مثالی از این کتابخانه را مشاهده می کنید :
1 2 3 4 5 6 7 8 9 10 11 12 |
$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) "[...]" |
2. کتابخانه Rinvex Country
می توان گفت کتابخانه Rinvex Country یک پکیچ کامل برای PHP است که در آن مجموعه ای از اطلاعات کشورهای مختلف جهان را در اختیار شما می گذارد. در این کتابخانه با استفاده از حدود 50 متد می توانید به اطلاعات گوناگونی از کشورهای دنیا دسترسی بیابید.
1 2 3 4 5 6 7 8 |
$egypt = country('eg'); $egypt->getCapital(); // Cairo $egypt->getDemonym(); // Egyptian $egypt->getTld(); // .eg $egypt->getContinent(); // Africa $egypt->getSubregion(); // Northern Africa $egypt->getBorders(); // ["ISR","LBY","SDN"] |
3. کتابخانه Botman
یک کتابخانه PHP برای مدیریت و ایجاد بوت های متفاوت که با اکثر اپلیکیشن های مطرح دنیا مانند Slack و Telegram و… سازگار می باشد. شما با این راهنما می توانید از این کتابخانه به راحتی در لاراول استفاده کنید.
1 2 3 4 5 6 7 8 9 10 |
// create an instance $botman = BotManFactory::create($config); // give the bot something to listen for. $botman->hears('hello', function (BotMan $bot) { $bot->reply('Hello yourself.'); }); // start listening $botman->listen(); |
4. کتابخانه Charts
این یک کتابخانه برای لاراول است که با استفاده از آن می توانید چارت هایی زیبا و مختلف خلق کنید. این کتابخانه با PHP و چند کتابخانه دیگر از جاوا اسکریپت کار می کند و امکانات مختلفی را برای رسم نمودار در اختیار شما قرار می دهد.
1 2 3 4 5 6 7 |
$chart = Charts::create('line', 'highcharts') ->view('custom.line.chart.view') ->title('My nice chart') ->labels(['First', 'Second', 'Third']) ->values([5,10,20]) ->dimensions(1000,500) ->responsive(false); |
5. کتابخانه Math PHP
این کتابخانه PHP یک کتابخانه برای معادلات و الگوریتم های ریاضی است که کاملا ماژولار می باشد و می توانید از هر بخشی از آن در پروژه های خود استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 |
// Factors of an integer $factors = Algebra::factors($n); // Fibonacci sequence $fib = Advanced::fibonacci($n); // Combinations $nCk = Combinatorics::combinations($n, $k); // Likelihood ratios $LL = Experiment::likelihoodRatio($a, $b, $c, $d); |
6. کتابخانه PHPUnit
کتابخانه ای پیشرفته برای تست کردن فریم ورک های مختلف می باشد که در فریم ورک هایی مانند لاراول تاکنون مورد استفاده قرار گرفته است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class StackTest extends TestCase { public function testPushAndPop() { $stack = []; $this->assertEquals(0, count($stack)); array_push($stack, 'foo'); $this->assertEquals('foo', $stack[count($stack)-1]); $this->assertEquals(1, count($stack)); $this->assertEquals('foo', array_pop($stack)); $this->assertEquals(0, count($stack)); } } |
7. کتابخانه SWAP
این کتابخانه PHP ابزاری کاربردی برای استعلام نرخ ارزها از وبسایت های معروف و بزرگی مانند Fixer، Yahoo و گوگل است که برای استفاده در لاراول آماده شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Build Swap with Fixer.io $swap = (new Builder()) ->add('fixer') ->build(); // Get the latest EUR/USD rate $rate = $swap->latest('EUR/USD'); // 1.129 $rate->getValue(); // Get the EUR/USD rate 15 days ago $rate = $swap->historical('EUR/USD', (new \DateTime())->modify('-15 days')); |
8. کتابخانه Atoum
کتابخانه ای با امکاناتی زیاد برای تست کردن کدها، کلاس ها و فریم ورک های مختلف که ویژگی های جالب دیگری نیز دارد.
1 2 3 4 5 |
$this->given($testedInstance = new testedClass()) ->and($testedClass[] = $firstValue = uniqid()) ->then ->sizeof($testedInstance)->isEqualTo(1) ->string($testedClass[0])->isEqualTo($firstValue); |
9. کتابخانه Simple Regex Language
کتابخانه ای برای اعمال ساده تر زبان Regex بر روی پروژه های شماست که متدهای بسیاری را در اختیار شما قرار می دهد تا با استفاده از آنها بتوانید به راحتی از زبان Regex در پروژه خود استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$query = SRL::startsWith() ->anyOf(function (Builder $query) { $query->digit() ->letter() ->oneOf('._%+-'); })->onceOrMore() ->literally('@') ->anyOf(function (Builder $query) { $query->digit() ->letter() ->oneOf('.-'); })->onceOrMore() ->literally('.') ->letter()->atLeast(2) ->mustEnd()->caseInsensitive(); |
10. کتابخانه Stash
استش یک کتابخانه فوق العاده برای افزایش سرعت اجرای کدهای شماست. در واقع این کتابخانه با کش کردن کدهای شما باعث افزایش سرعت می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$pool = $this->cachePool; // Get a Stash object from the cache pool. $item = $pool->getItem("/user/{$userId}/info"); // Get the data from it, if any happens to be there. $userInfo = $item->get(); // Check to see if the cache missed, which could mean that it either // didn't exist or was stale. if($item->isMiss()) { // Run the relatively expensive code. $userInfo = loadUserInfoFromDatabase($userId); // Set the new value in $item. $item->set($userInfo); // Store the expensive code so the next time it doesn't miss. $pool->save($item) } |
11. کتابخانه PHP VCR
این کتابخانه بخش از کتابخانه معروف Ruby library می باشد که کاربرد آن در تست کردن درخواست های HTTP می باشد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// After turning on, the VCR will intercept all requests \VCR\VCR::turnOn(); // Record requests and responses in cassette file 'example' \VCR\VCR::insertCassette('example'); // Following request will be recorded once and replayed in future test runs $result = file_get_contents('http://example.com'); $this->assertNotEmpty($result); // To stop recording requests, eject the cassette \VCR\VCR::eject(); // Turn off VCR to stop intercepting requests \VCR\VCR::turnOff(); |
12. کتابخانه Latitude
کتابخانه ای فوق العاده برای کار با پایگاه داده (Database) است که اکثر پایگاه داده های موجود PHP را پشتیبانی می کند.
1 2 3 4 5 6 7 8 |
$select = SelectQuery::make( 'id', 'username' ) ->from('users'); echo $select->sql(); // SELECT id, username FROM users |
13. کتابخانه Instaphp
کتابخانه ای غیر رسمی برای دسترسی به API اینستاگرام که در واقع یک روش ساده برای احراز هویت و دریافت اطلاعات از اینستاگرام را فراهم می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$api = new Instaphp\Instaphp([ 'client_id' => 'your client id', 'client_secret' => 'your client secret', 'redirect_uri' => 'http://somehost.foo/callback.php', 'scope' => 'comments+likes' ]); $popular = $api->Media->Popular(['count' => 10]); if (empty($popular->error)) { foreach ($popular->data as $item) { printf('<img src="%s">', $item['images']['low_resolution']['url']); } } |
14. کتابخانه Dompdf
کتابخانه ای کاربردی برای تبدیل فایل های HTML به فایل های PDF است که شما به راحتی می توانید با استفاده از آن کدهای CSS و HTML خود را به فایل های PDF تبدیل کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// reference the Dompdf namespace use Dompdf\Dompdf; // instantiate and use the dompdf class $dompdf = new Dompdf(); $dompdf->loadHtml('hello world'); // (Optional) Setup the paper size and orientation $dompdf->setPaper('A4', 'landscape'); // Render the HTML as PDF $dompdf->render(); // Output the generated PDF to Browser $dompdf->stream(); |
15. کتابخانه Daux.io
ابزاری فوق العاده برای ایجاد مستندات که به کمک آن می توانید به سادگی مستندات ابزار خود را ایجا کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Example configuration { "title": "DAUX.IO", "tagline": "The Easiest Way To Document Your Project", "author": "Justin Walsh", "image": "app.png", "html": { "theme": "daux-blue", "breadcrumbs": true, "repo": "justinwalsh/daux.io", "edit_on_github": "justinwalsh/daux.io/blob/master/docs", "twitter": ["justin_walsh", "todaymade"], "google_analytics": "UA-12653604-10", "links": { "Download": "https://github.com/justinwalsh/daux.io/archive/master.zip", "GitHub Repo": "https://github.com/justinwalsh/daux.io", "Made by Todaymade": "http://todaymade.com" } } } |
16. کتابخانه Purl
کتابخانه ای سبک برای کار با URLها که به کمک آن می توانید بخش های پیچیده یک URL را به راحتی جدا کنید و مورد استفاده قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 |
$url = \Purl\Url::parse('http://jwage.com') ->set('scheme', 'https') ->set('port', '443') ->set('user', 'jwage') ->set('pass', 'password') ->set('path', 'about/me') ->set('query', 'param1=value1¶m2=value2'); echo $url->publicSuffix; // com echo $url->registerableDomain; // jwage.com |
17. کتابخانه AWS SDK
کتابخانه ای رسمی برای کار با سرویس های وب آمازون که به راحتی هر چه تمام تر در تمام پروژه های شما قابلیت استفاده دارد.
1 2 3 4 5 6 7 8 9 10 11 12 |
// Instantiate an Amazon S3 client. $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-west-2' ]); $s3->putObject([ 'Bucket' => 'my-bucket', 'Key' => 'my-object', 'Body' => fopen('/path/to/file', 'r'), 'ACL' => 'public-read', ]); |
18. کتابخانه MINI
یک مینی فریم ورک که در کنار امکاناتی که به شما ارائه می کند به سادگی با بررسی آن می توانید با ساختار فریم ورک ها آشنا شوید و ببینید یک فریم ورک به چه صورت عمل می کند.
1 2 3 4 5 6 7 8 |
// Working with the model $songs = $this->model->getAllSongs(); $amount_of_songs = $this->model->getAmountOfSongs(); // Loading views require APP . 'views/_templates/header.php'; require APP . 'views/songs/index.php'; require APP . 'views/_templates/footer.php'; |
19. کتابخانه Imagine
این کتابخانه مخصوص کار با تصاویر است. به کمک این کتابخانه می توانید عملیات بسیار زیادی نظیر تغییر سایز، استفاده از افکت، بریدن تصویر و… را روی تصاویر خود پیاده کنید.
1 2 3 4 5 6 7 8 |
$palette = new Imagine\Image\Palette\RGB(); $image = $imagine->create(new Box(400, 300), $palette->color('#000')); $image->draw() ->ellipse(new Point(200, 150), new Box(300, 225), $image->palette()->color('fff')); $image->save('/path/to/ellipse.png'); |
20. کتابخانه OAuth ۲.۰ Server
کتابخانه ای معروف که به شما این امکان را می دهد تا یک سیستم قدرتمند احراز هویت برای API های خود بسازید. این کتابخانه کاملا استاندارد بوده و توسط وبسایت های معروفی در دنیا استفاده شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Setup the authorization server $server = new \League\OAuth2\Server\AuthorizationServer( $clientRepository, $accessTokenRepository, $scopeRepository, $privateKey, $publicKey ); // Enable a grant on the server $server->enableGrantType( new \League\OAuth2\Server\Grant\ClientCredentialsGrant(), new \DateInterval('PT1H') // access tokens will expire after 1 hour ); |
21. کتابخانه Monolog
با استفاده از این کتابخانه می توانید یک سیستم ورود برای ارسال داده های مورد نیاز برای اتصال به یک فایل، سوکت، پایگاه داده، ایندکس یا خدمات دیگر وب طراحی نمایید.
1 2 3 4 5 6 7 8 9 10 |
use Monolog\Logger; use Monolog\Handler\StreamHandler; // ایجاد کانال ارتباط $log = new Logger('name'); $log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING)); // اضافه کردن رکورد ها به log $log->warning('Foo'); $log->error('Bar'); |
22. کتابخانه PHPExcel
این کتابخانه مجموعه ای از کلاس های PHP است که به توسعه دهندگان این اجازه را می دهد تا به راحتی یک ویرایشگر مجزا برای صفحات برنامه خود ایجاد کنند. این کتابخانه توانایی خواندن و نوشتن صفحات مجزا در فرمت های مختلفی مثل اکسل (xls.) و فرمت های دیگری مثل .ods و CSV را نیز دارد.
1 2 3 4 5 6 7 8 9 |
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); |
23. کتابخانه PHP-ML
کتابخانه ای فوق العاده برای یادگیری ماشین که به کمک آن می توانید از APIهای مختلف برای آموزش ربات و تصمیم گیری بر اساس داده های ورودی توسط آن استفاده کنید. این کتابخانه الگوریتم های متعددی را برای تشخیص الگو و محاسبات پیچیده به شما پیشنهاد می دهد.
1 2 3 4 5 6 7 8 9 |
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]); |
24. کتابخانه Opauth
این کتابخانه برای اعتبارسنجی حساب کاربری کاربران در شبکه های اجتماعی و هرگونه عملیات دیگری که به اعتبارسنجی نیاز دارد ایجاد شده است. اکثر شبکه های اجتماعی بزرگ مثل فیسبوک، لینکدین، توییتر و اینستاگرام توسط این کتابخانه پشتیبانی می شوند.
1 2 3 4 5 6 7 8 |
'Strategy' => array( // تعریف استراتژی مورد نظر در این بخش 'Facebook' => array( 'app_id' => 'YOUR APP ID', 'app_secret' => 'YOUR APP SECRET' ), ); |
25. کتابخانه Whoops
این کتابخانه به شما کمک می کند خطاهای موجود در بخش هایی از کد را به همراه توضیحات دقیق در مورد آنها مشاهده کنید. این کتابخانه بخشی را که در آن خطا رخ داده است را رنگی می کند تا بتوانید به راحتی محل وقوع خطا را تشخیص دهید. لازم به ذکر است که فریم ورک لاراول به طور پیش فرض این کتابخانه را دارا می باشد.
1 2 3 |
$whoops = new \Whoops\Run; $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler); $whoops->register(); |
26. کتابخانه ColorExtractor
کتابخانه ای کوچک برای استخراج رنگ ها از یک تصویر می باشد که می تواند تمام پیکسل های تصویر مورد نظر را بررسی کند.
1 2 3 4 5 6 7 8 9 10 |
require 'vendor/autoload.php'; use League\ColorExtractor\Color; use League\ColorExtractor\Palette; $palette = Palette::fromFilename('./some/image.png'); $topFive = $palette->getMostUsedColors(5); $colorCount = count($palette); $blackCount = $palette->getColorCount(Color::fromHexToInt('#000000')); |
27. کتابخانه PHP Humanizer
این کتابخانه با استفاده از متدها متغیرها را دریافت می کند و آنها را به فرمت های قابل خواندن توسط ما تبدیل می کند. برای مثال می تواند اعداد یونانی را به اعداد انگلیسی تبدیل کند. (این کتابخانه از 15 زبان دنیا پشتیبانی می کند)
1 2 3 4 5 6 7 8 9 10 11 12 |
use Coduo\PHPHumanizer\NumberHumanizer; echo StringHumanizer::humanize('field_name'); // "Field Name" echo NumberHumanizer::ordinalize(1); // "1st" echo NumberHumanizer::ordinalize(23); // "23rd" echo NumberHumanizer::toRoman(5); // "V" echo NumberHumanizer::fromRoman("MMMCMXCIX"); // 3999 echo NumberHumanizer::binarySuffix(1024); // "1 kB" echo NumberHumanizer::binarySuffix(1073741824 * 2); // "2 GB" |
28. کتابخانه ROBO
robo یک اجرا کننده آسان برای PHP است که با استفاده از آن می توانید یک سیستم اتوماتیک برای افزایش و بهبود عملکرد کاری خود ایجاد کنید و مدت زمان لازم برای اجرای یکی پروژه را به حداقل برسانید. این کتابخانه توانایی اجرای تست ها، ترجمه کدهای دریافتی، اعمال تغییرات روی کنترلرها و… را دارد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public function pharPublish() { $this->pharBuild()->run(); $this->_rename('robo.phar', 'robo-release.phar'); return $this->collectionBuilder() ->taskGitStack() ->checkout('gh-pages') ->taskGitStack() ->add('robo.phar') ->commit('robo.phar published') ->push('origin', 'gh-pages') ->checkout('master') ->run(); } |
29. کتابخانه PHPMailer
یکی از مهم ترین کتابخانه های PHP است که می توان گفت بدون آن کدها ناقص می باشند. در واقع کار اصلی این کتابخانه ایجاد بستری امن برای ارسال ایمیل در PHP است. این کتابخانه برای ارسال ایمیل از سیستم SMTP استفاده می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
require 'PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->addAttachment('/var/tmp/file.tar.gz'); $mail->isHTML(true); $mail->Subject = 'آبجکت ها در اینجا قرار میگیرند'; $mail->Body = 'This is the HTML message body <b>in bold!</b>'; if(!$mail->send()) { echo 'پیام ارسال نشد!'; echo 'Mailer Error: ' . $mail->ErrorInfo; } else { echo 'پیام ارسال شد'; } |
30. کتابخانه Ratchet
این کتابخانه PHP برای اضافه کردن رابط های WebSockets در برنامه ها با استفاده از PHP است. WebSocket ها در واقع برای ایجاد ارتباطی همزمان و دو طرفه بین سرور و کلاینت به کار می آیند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
class MyChat implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new \SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); } public function onMessage(ConnectionInterface $from, $msg) { foreach ($this->clients as $client) { if ($from != $client) { $client->send($msg); } } } } //اجرای برنامه سرور از طریق پروتکل وب سوکت بر روی درگاه۸۰۸۰ $app = new Ratchet\App('localhost', 8080); $app->route('/chat', new MyChat); $app->run(); |
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.