عنوان مقاله :

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

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

منابع تازه برای توسعه دهندگان Front-end - سری اول

امروزه ابزار ها ، کتابخانه ها و فریمورک های مختلفی بصورت روزانه برای توسعه دهنگاه Front-end ارائه می شود تا آنها بتوانند سریع تر ، بهتر و راحتر پروژه...

20 کتابخانه عالی برای تابستان 1395 - قسمت اول

اولین بار php در سال 1995 ارائه شده و تا به الان مخاطبان خیلی خیلی زیادی داره و همچنین کسانی که با اون کار میکنن هم خیلی زیاد هستند به همین خاطر هر رو...

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

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

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

امروز میخوام در مورد یک بحث مهم در شی گرائی صحبت کنم و اونم وارثته . خوب اینجا من گفتم وارثت ، اولین چیزی که بعد از شنیدن وراثت به ذهنتون خطور کرد چی...

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

بیرانوند | 1 هفته پیش

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

sajjad | 2 ماه پیش

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