در این پست قراره یک سری کتابخونه های 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¶m2=value2');
echo $url->getUrl(); // https://jwage:password@jwage.com:443/about/me?param1=value1¶m2=value2
echo $url->publicSuffix; // com
echo $url->registerableDomain; // jwage.comیک بزار برای ایجاد کردن مستندات . با استفاده از این ابزار میتونید بسادگی مستندات ابزار خودتون رو ایجاد کنید .
// 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
 
                                     
     
        
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید