عنوان مقاله :

20 کتابخانه عالی برای php

گردآوری و تالیف : حسام موسوی
تاریخ انتشار : 13 بهمن 1395
دسته بندی ها : برنامه نویسی

در این پست قراره یک سری کتابخونه های PHP رو معرفی کنم که در چند ماه گذشته مورد توجه خیلی ها قرار گرفته و توسط خیلی ها در پروژه ها استفاده شده . این کتابخونه ها برای توسعه سریع پروژه های PHP میتونن مورد استفاده قرار بگیرن . از این رو از نظر من حتما میتونن برای شما مفید باشن . خوب بریم خیلی سریع شروع به معرفی این کتابخونه ها کنیم. 

Requests for PHP

یک کتابخونه جالب برای ارسال درخواست HTTP . این کتابخونه یک سری متد ها رو در اختیار شما قرار میده تا بتونید header های اضافه کنید یا به یک سری data ها دسترسی پیدا کنید . این کتابخونه بسیار تمیز و برای استفاده از Api ها مناسبه به مثال زیر از این کتابخونه دقت کنید . 

$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) "[...]"

Rinvex Country

Rinvex Country یک پکیچ PHP است که مجموعه ای از اطلاعات کشور های جهان را در اختیار شما قرار میدهد . با استفاده از تقریبا 50 متد میتوانید به اطلاعات مختلفی از کشور ها دسترسی پیدا کنید . 

$egypt = country('eg');

$egypt->getCapital();   // Cairo
$egypt->getDemonym();   // Egyptian
$egypt->getTld();       // .eg
$egypt->getContinent(); // Africa
$egypt->getSubregion(); // Northern Africa
$egypt->getBorders();   // ["ISR","LBY","SDN"]

Botman

یک کتابخانه php برای مدیریت و ایجاد بوت های مختلف . این کتابخونه با اکثر اپلیکیشن های معروف دنیا مثل تلگرام ، slack و ... سازگاره . شما با این راهنما میتونید داخل لاراول بسادگی از این کتابخونه استفاده کنید اینجا

// 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();

Charts

کتابخونه ای برای لاراول که با استفاد از اون میتونید chart های مختلف و زیبای بوجود بیارید . این کتابخونه با php و چند کتابخونه javascript کار میکنه و امکانات مخلفتی رو برای رسم نمودار در اختیارتون قرار میده . 

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

Swap

ابزاری برای بازیابی نرخ ارز ها از وبسایت های معروف و بزرگی مثل  Fixer, Google, and Yahoo. این پکیج بسادگی برای استفاده در لاراول هم اماده شده است . 

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

Math PHP

یک کتابخانه معادلات و الگوریتم های ریاضی برای استفاده در php . این کتابخونه کاملا ماژولار هست و میتوانید از هر بخشی از ان که خواستید در پروژه های خود استفاده کنید . 

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

PHPUnit

یک کتابخونه پیشرفته برای تست فریمورک های مختلف . این ابزار در فریمورک های همچون لاراول و دیگرفریمورک های بزرگ مورد استفاده قرار گرفته است . 

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

Atoum

یک ابزار دیگر اما نچندان معروف ولی با امکانات زیاد برای تست کدها ، کلاس ها و فریمورک های مختلف شما که ویژگی های جالبی هم دارد .

$this->given($testedInstance = new testedClass())
    ->and($testedClass[] = $firstValue = uniqid())
    ->then
        ->sizeof($testedInstance)->isEqualTo(1)
        ->string($testedClass[0])->isEqualTo($firstValue);

Simple Regex Language

کتابخونه ای برای اعمال ساده تر Regex Language بر پروژه های شما . این کتابخانه متدهای فراوانی را در اختیارتان قرار میدهد که با استفاده از آنها میتوایند بسادگی از Regex Language در پروژه خود استفاده کنید . 

$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();

Stash

Stash یک کتابخانه برای افزایش سرعت اجرای کد های شماست که در اصل کدهای شما را کش میکند .

$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)
}

PHP VCR

بخشی از کتابخونه ای معروف  Ruby library برای تست کردن درخواست های HTTP .

// 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();

OAuth 2.0 Server

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

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

Imagine

کتابخونه ای برای کار با تصاویر ، شما با استفاده از این کتابخونه میتونید عملیات زیادی روی تصویرهاتون انجام بدید مثل تغییر سایز ، اعمال افکت ، Crop کردن و خیلی چیزهای دیگه که برای آشنایی بیشتر حتما به لینک این ابزار مراجعه کنید . 

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

MINI

یک مینی فریمورک که در کنار اینکه به شما بخش های مختلفی برای استفاده را میدهد به سادگی با بررسی آن میتوانید با ساختار فریمورک ها هم اشنا بشین و ببینید که یک فریمورک به چه صورتی عمل میکند . 

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

AWS SDK

یک کتابخانه رسمی برای کارکردن با Amazon Web Services. این کتابخانه بسادگی در هر پروژه ای قابل استفاده است .

// 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',
]);

Purl

یک کتابخونه ای سبک برای کار کردن با URL ها . با استفاده از Purl  میتونید بخش های پیچیده یک Url رو بسادگی جدا کنید و مورد استفاده قرار بدید . 

$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&param2=value2');

echo $url->getUrl(); // https://jwage:password@jwage.com:443/about/me?param1=value1&param2=value2
echo $url->publicSuffix; // com
echo $url->registerableDomain; // jwage.com

Daux.io

یک بزار برای ایجاد کردن مستندات . با استفاده از این ابزار میتونید بسادگی مستندات ابزار خودتون رو ایجاد کنید .

// 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"
        }
    }
}

Dompdf

یک کتابخانه برای ایجاد کردن فایل های PDF از فایل های HTML . شما بسادگی میتوانید با استفاده از این ابزار کدهای css و html خودتون رو به فایل .pdf تبدیل کنید . 

// 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();

Instaphp

یک کتابخانه غیر رسمی برای دسترسی به Instagram API . این ابزار یک روش ساده برای احرازهویت و دریافت اطلاعات از Instagram API را فراهم میکند . 

$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']);
    }
}

Latitude

کتابخانه ای برای کار کردن با دیتابیس که بیشتر دیتابیس های موجود php را پشتیبانی میکند دیتابیس های مثل MySQL, Postgres, SQL Server و دیتابیس های دیگه . 

$select = SelectQuery::make(
        'id',
        'username'
    )
    ->from('users');

echo $select->sql();
// SELECT id, username FROM users

منبع : tutorialzine

مقالات پیشنهادی

اپلیکیشن هیبریدی چیست ؟

وقتی شما دارید یک اپلیکیشن موبایل توسعه میدین یکی از تصمیم هایی که باید بگیرید اینه که اپلیکیشن بصورت Native App, Web App یا Hybrid App باشه. هرکدوم ا...

پی اچ پی 7.1 و ویژگی های جدید

تقریبا یک ماه قبل پی اچ پی 7.1 بصورت نهایی ارائه شد و حالا توسعه دهنده ها میتونن از اون در پروژه های خودشون استفاده کنن . در این نسخه جدید ، ویژگی های...

15 کتابخانه جالب جاوا اسکریپت و Css - مرداد 95

پیدا کردن ابزار ها و کتابخونه های جاوا اسکریپت و css که هم کاربردی و هم جالب باشه امروزه تقریبا کار مشکلی شده بدلیل اینکه تعداد این ابزارها بسیار زیاد...

برنامه نویسی شی گرا در php | قسمت دوم

برای اضافه کردن اطلاعات در کلاس ها از property ها استفاده میشه . کار اونها دقیقا شبیه متغیرها در php معمولیه و تنها تفاوتشون اینکه قبل از تایپ اسم pro...

دیدگاه های ارزشمند شما

برای ارسال نظر لازم است ابتدا وارد سایت شوید
بیرانوند | 7 ماه پیش

عالی بود
خدا قوت

sajjad | 9 ماه پیش

خسته نباشی اقای موسوی.خدا قوت برادر.مثل همیشه عالی بود.بسیار مفید بود