۲۰ کتابخانه پرکاربرد PHP

۲۰ کتابخانه پرکاربرد PHP
زبان برنامه‌نویسی PHP از سال ۱۹۹۵ معرفی شده و یکی از محبوب‌ترین زبان‌هایی است که برنامه‌نویسان از آن استفاده می‌کنند. اگر نگاهی به انجمن PHP روی گیت‌هاب بیندازید، متوجه خواهید شد که روزانه پروژه‌های بسیار جذابی  با استفاده از PHP  پیاده‌سازی می‌شوند.
در این مطلب سعی داریم ۲۰ کتابخانه‌ی جالب و کاربردی را برای‌تان معرفی کنیم که جزو محبوب‌ترین کتابخانه‌های سال ۲۰۱۶ هستند. این کتابخانه‌های متن باز کمک خوبی برای پیاده‌سازی پروژه‌های PHP خواهد بود. در ادامه با مجیدآنلاین همراه باشید.
دارالترجمه رسمی
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
جای بروشور دیواری
خرید جای بروشور دیواری و رومیزی
افزونه های سئو وردپرس
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
تعمیر لوازم خانگی
تعمیر جاروبرقی، مایکروفر، بخارشوی، ظرفشویی، لباسشویی، سولاردام، کولرگازی
خودتان را اینجا معرفی کنید

Monolog

با استفاده از کتابخانه‌ی Monolog می‌توانید یک سیستم پیشرفته‌ی ورود به پنل  طراحی کنید که از وب سرویس ها ، دیتابیس ها و فایل ها لاگ می‌گیرد. این کتابخانه کاربرد های فراوانی دارد و با سه فریمورک Laravel، Symfony2 و Slim نیز سازگار است. 
 
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->warning('Foo');
$log->error('Bar');

PHPExcel

این کتابخانه مجموعه‌ای از کلاس‌های PHP ای است که به توسعه‌دهندگان اجازه می‌دهد قابلیت ویرایش صفحه گسترده (spreadsheet) را در برنامه‌های خود پیاده‌سازی کنند. PHPExcel  از فرمت‌های پرکابردی مثل.xls و .xlsx، .ods و CSV پشتیبانی می‌کند. 
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-ML یک کتابخانه‌ی جالب برای پیاده‌سازی تکنیک یادگیری ماشین است. PHP-ML این امکان را به شما می‌دهد که با استفاده از یک API به ربات خود بیاموزید بر طبق داده‌های ورودی تصمیم‌گیری کند. این کتابخانه الگوریتم‌های گوناگونی برای تشخیص الگو و محاسبات آمار پیچیده ارائه می‌دهد.
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]);
// returns 'b' as the [3, 2] point is closer to the points in group b

Opauth

این کتابخانه‌ی کاربردی به کاربران اجازه می‌دهد تا از طریق شبکه‌های اجتماعی مثل گوگل‌پلاس، فیس بوک، توییتر، گیت‌هاب، اینستاگرم و لینکدین هویت خود را تایید کنند. فریمورک‌های زیادی از Opauth پشتیبانی می‌کنند. 
'Strategy' => array(  
    // Define strategies here.

    'Facebook' => array(
        'app_id' => 'YOUR APP ID',
        'app_secret' => 'YOUR APP SECRET'
    ),
);

Whoops

Whoops جزییات دقیق خطاها و اشکالات را به شما نشان خواهد داد. این کتابخانه یک صفحه خطا را نشان می‌دهد که در آن تمامی اشکالات با رنگ و سایزبندی مختلف مشخص است.  فریمورک لاراول از این Whoops پشتیبانی می‌کند. 
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();
// That's it!

FastCache

سیستم کش این کتابخانه سرعت بارگذاری سایت را به میزان قابل توجهی افزایش می‌دهد. FastCache به جای فرستادن هر کوئری به پایگاه داده، مورادی را ارسال می‌کند که خاص و منحصر بفرد است. به این معنا که اگر یک جست و جوی مشابه را 1000 بار انجام داده باشید، تنها یک بار از پایگاه داده استفاده می‌شود. بقیه‌ی 999 بار از کشِ سیستم بارگذاری می‌شود. 
use phpFastCache\CacheManager;

$config = array(
    "storage"   =>  "files",
    "path"      =>  "/your_cache_path/dir/",
);
CacheManager::setup($config);

// Try to get from Cache first with an Identity Keyword
$products = CacheManager::get("products");

// If not available get from DB and save in Cache.
if(is_null($products)) {
    $products = "DB SELECT QUERY";
    // Cache your $products for 600 seconds.
    CacheManager::set($cache_keyword, $products,600);
}

Guzzle

Guzzle یکی از بهترین کتابخانه‌هایی است که برای  کار با HTTP وجود دارد. این کتابخانه از عهده‌ی انجام هر کاری در مورد HTTP از جمله درخواست‌های همزمان و غیر همزمان، کوکی‌های HTTP، آپلود و دانلود‌های زیاد و حجیم برمی‌آید. کار کردن با این کتابخانه بسیار آسان است. 
$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

Munee ترفند های زیادی را امکانپذیر می‌سازد. برای مثال کارهایی مثل ترکیب چند فایل CSS یا جاوا اسکریپت با یکدیگر، تغییر اندازه تصویر و کوچک سازی فایل ها یا فشرده سازی بر اساس Gzip به راحتی توسط این کتابخانه قابل اجراست. وظایفی که مطرح شد هم درسمت سرور و هم در سمت کاربر اجرا می‌شود تا ذخیره سازی مطلوبی انجام شود. 
require 'vendor/autoload.php';
echo MuneeDispatcher::run(new MuneeRequest());
<!-- 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

Twig یک موتور قالب ساز است که با استفاده از آن می‌توانید کد های کوتاه تر و خواناتری بنویسید. این کتابخانه هر امکان پیشرفته ای که از یک موتور قالب ساز انتظار دارید، مانند مثل کار با حلقه‌ها، متغیرها و شروط،  به شما می‌دهد. 
// 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

Goutte یک خزنده‌ی وب است که با استفاده از ان می‌توانید اطلاعات مورد نظر خود را از صفحات  HTML یا XML  به دست آورید. در واقع یک درخواست به آدرس اینترنتی مورد نظر فرستاده می‌شود و پاسخی دریافت می‌شود. این پاسخ به توسعه دهنده اجازه می‌دهد تا به روش‌های گوناگون با صفحه مورد نظر در تعامل باشد.
use Goutte\Client;
$client = new Client();

// Go to the symfony.com website
$crawler = $client->request('GET', 'http://www.symfony.com/blog/');

// Click on the links
$link = $crawler->selectLink('Security Advisories')->link();
$crawler = $client->click($link);

// Extract data
$crawler->filter('h2 > a')->each(function ($node) {
    print $node->text()."\n";
});

Climate

این کتابخانه برای افرادی مناسب است که دستورات PHP را از خط فرمان اجرا می‌کنند. Climate مجموعه روش هایی را برای برقراری ارتباط با ترمینال ارائه می‌دهد. 
$climate = new League\CLImate\CLImateaker;

// Output
$climate->out('This prints to the terminal.');

// Input
$input = $climate->input('How you doin?');
$response = $input->prompt();

// Formatting
$padding = $climate->padding(10);

$padding->label('Eggs')->result('$1.99');
$padding->label('Oatmeal')->result('$4.99');
// Eggs...... $1.99
// Oatmeal... $4.99

Alice

این کتابخانه‌ بر پایه Faker ساخته شده است که اشیای جعلی برای تست تهیه می‌کند. روش کار به این صورت است که  ابتدا باید ساختار اشیای مورد نظر خود را بسازید. سپس با فراخوانی تابع آلیس، این شی جعلی به یک شی‌ واقعی با مقادیر تصادفی تبدیل می‌شود.  
// Template in person.yml file
Person:
    person{1..10}:
        firstName: ''
        lastName: ''
        birthDate: ''
        email: ''


// Load dummy data into an object
$person = \Nelmio\Alice\Fixtures::load('/person.yml', $objectManager);

Ratchet

این کتابخانه از PHP برای پشتیبانی از WebSocket ها استفاده می‌کند. WebSocket یک کانال ارتباطی میان سرور و کلاینت به صورت لحظه‌ای برقرار می‌کند. برای این منظور Ratchet پردازش‌های جداگانه‌ای را ایجاد می‌کند که همیشه در حال اجراست و پیام‌ها را به صورت ناهمگام ردوبدل می‌کند. 
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);
            }
        }
    }
}

// Run the server application through the WebSocket protocol on port 8080
$app = new Ratchet\App('localhost', 8080);
$app->route('/chat', new MyChat);
$app->run();

PHPMailer

این کتابخانه در سیستم‌هایی مثل وردپرس و دروپال پیاده‌سازی شده و یکی از امن‌ترین راه‌کارهای ارسال ایمیل در PHP است. PHPMailer  توسط SMTP پشتیبانی می‌شود و می‌توانید ایمیل‌های مبتنی بر HTML را با استفاده از آن ارسال کنید. 
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('steve@example.com');    

$mail->addAttachment('/var/tmp/file.tar.gz');        
$mail->isHTML(true);                                  

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body in bold!';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

Hoa

Hoa یک کتابخانه‌ی واحد نیست. این سیستم مجموعه‌ای از 50 کتابخانه‌ی کاربردی را ارائه می‌دهد که برای توسعه‌ی وب مفیدند. Hoa کاملا ماژولار است. به این معنی که می‌توانید از هر کتابخانه‌ای که مدنظرتان است، بدون هیچ در هم ریختگی استفاده کنید.  
// Hoa Mail
$message            = new Hoa\Mail\Message();
$message['From']    = 'Gordon Freeman ';
$message['To']      = 'Alyx Vance ';
$message['Subject'] = 'Hoa is awesome!';
$message->addContent(
    new Hoa\Mail\Content\Text('Check this out: http://hoa-project.net/!')
);
$message->send();

// Hoa Session
$user = new Hoa\Session\Session('user');

if ($user->isEmpty()) {
    echo 'first time', "\n";
    $user['foo'] = time();
} else {
    echo 'other times', "\n";
    var_dump($user['foo']);
}

CssToInlineStyles

برای ساخت یک ایمیل در قالب HTML کد‌های CSS باید بصورت inline نوشته شود. CssToInlineStyles این کار را به راحتی برای‌مان انجام خواهد داد. کافیست تا کد های خود را در یک فایل .css  بنویسید تا این کتابخانه با استفاده از انتخاب‌گرها، کد‌ها را به تگ‌های  مناسب خود اختصاص دهد. 
use TijsVerkoyen\CssToInlineStyles\CssToInlineStyles;

// create instance
$cssToInlineStyles = new CssToInlineStyles();

$html = file_get_contents(__DIR__ . '/examples/sumo/index.htm');
$css = file_get_contents(__DIR__ . '/examples/sumo/style.css');

// output
echo $cssToInlineStyles->convert(
    $html,
    $css
);

Stringy

برای هرگونه تغییری در رشته‌ها باید از این کتابخانه استفاده کنید. Stringy متد های مختلفی از جمله( reverse(), htmlEncode(), toAscii()  )  را برای اصلاح متن پیشنهاد می‌دهد. 
s('Camel-Case')->camelize(); // 'camelCase'
s('   Ο     συγγραφέας  ')->collapseWhitespace(); // 'Ο συγγραφέας'
s('foo & bar')->containsAll(['foo', 'bar']); // true
s('str contains foo')->containsAny(['foo', 'bar']); // true
s('fòôbàř')->endsWith('bàř', true); // true
s('fòôbàř')->getEncoding(); // 'UTF-8'
s('&')->htmlDecode(); // '&'

Robo

این کتابخانه یک اجرا کننده‌ی وظیفه(task) می‌باشد که فقط مختص PHP  است. با استفاده از Robo می‌توانید یک اتوماسیون برای خود راه بیندازید تا گردش کارتان بهبود یابد. کتابخانه‌ی Robo می‌تواند تست انجام دهد و به بروزرسانی‌های کنترل نسخه رسیدگی کند. 
// Doing a Git Commit with Robo
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();
}

PHP Humanizer

این کتابخانه از متد های مختلفی استفاده کرده و متغیرها را به شکلی خوانا و قابل فهم برای افراد تبدیل می‌کند. برای مثال می‌تواند اعداد یونانی را ترجمه کند، رشته‌های طولانی را کوتاه کند  و یا بایت‌ها را به شکل kB/MB/GB محاسبه ‌کند. این کتابخانه بیشتر از ۱۵ زبان (حتی از نوع گفتاری) را پشتیبانی می‌کند. 
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"

ColorExtractor

ColorExtractor کتابخانه‌ی سودمندی  است که برای استخراج رنگ از تصاویر استفاده می‌شود. این کتابخانه تمامی پیکسل‌های تصویر را بررسی کرده و یک پالت رنگی به ما بر می‌گرداند. توسعه دهندگان از این پالت رنگی برای تشخیص رنگ قالب استفاده می‌کنند و طراحی خود را با آن انطباق می‌دهند. 

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'));

منبع:
tutorialzine

کارشناس فناوری اطلاعات، مدیر محتوا و وبلاگ نویس حوزه‌ی فناوری

نظرات و سوالات کاربران

هنوز دیدگاه و یا سوالی ارسال نشده است.
هم اکنون شما اولین دیدگاه را ارسال کنید.