آشنایی با Lumen از لاراول
Lumen یک پروژه جدید از سازنده لاراول Taylor Otwell میباشد. در حقیقت یک میکرو-فریمورک است که به معنی کوچکتر، سریعتر و نحیف تر بودن آن در مقایسه با یک فریمورک کامل وب اپلیکیشن میباشد. PHP دو میکرو-فریمورک دیگر به نامهای Slim و Silex دارد. در این مقاله به آشنایی با Lumen خواهیم پرداخت.
Lumen ساختار مشابهی با لاراول دارد و شامل بسیاری از کامپوننتهای مشابه دیگری هم میشود. اما Lumen برای میکرو سرویسها توسعه داده شده است (اگرچه که میتوان هر کاری را با آن انجام داد). فریمورکهای Front-End مانند بوت استرپ، Elixir، سیستم Auth و session ها بصورت پیش فرض و بیرون جعبه میکرو-فریمورک Lumen وجود ندارند. (دوره آموزش لاراول (صفر تا صد) بروز رسانی خرداد)
پیشنهاد شگفت انگیز کدفرند،دسترسی به تمامی دوره های آموزشی کدفرند تنها با ۵۹ هزار تومان
کاربرد Lumen
Lumen برای پروژهها و کامپوننتهایی است تا بتوانند از قدرت و راحتی لاراول بهره ببرند. این میکرو-فریمورک بر روی میکرو-سرویسها و کامپوننتهای کوچک و بهم پیوسته تمرکز کرده که معمولا هسته پروژه را پشتیبانی و تقویت میکند. میکرو-سرویسها کامپوننتهای جداگانه با زمینههای محدود میباشند (به این معنی که آنها اینترفیسهای تعریف شده میان یکدیگر دارند)، بنابراین در معماری میکرو-سرویس ممکن است چندین برنامه کوچک Lumen داشته باشید که یکدیگر را پشتیبانی میکنند.
آموزش نصب Lumen
فرآیند نصب Lumen همانند لاراول بسیار ساده است. شما میتوانید آنرا بصورت global با استفاده از کامپوزر نصب کنید ::
composer global require "laravel/lumen-installer=~1.0"
بسیار خب، حالا میتوانید با اجرای دستور lumen new MyProject یک پروژه جدید با نام دلخواه در مسیر دلخواه خودتان ایجاد کنید. در این مثال من یک پروژه به نام my-cache ایجاد میکنم ::
cd Sites lumen new my-cache cd my-cache
اکنون ما یک پروژه Lumen ایجاد کردیم. حالا میتوانیم با اجرای php artisan مشاهده کنیم که چه دستوراتی را داریم و از آنها میتوانیم استفاده کنیم. همچنین میتوانیم با اجرای دستور php artisan serve در مسیر پروژه سایتمان را در آدرس localhost:8000 بالا بیاریم.
فعال کردن env. و fecade ها
در لاراول همه چیز بصورت پیش فرض آماده شده تا بتوانید کار خود را به سرعت شروع کنید. این مورد در Lumen هم تا حدی، صدق میکند اما شما باید برای اولین بار فایل bootstrap/app.php را چک کنید. در این فایل تنظیماتی وجود دارند که میتوانید فعالشان کنید. (آنها بصورت کامنت شده هستند و برای فعال کردنشات باید از حالت کامنت خارجشان کنید).
چون میخواهیم از فایلهای env. و fecade های لاراول استفاده کنیم، من این دو آپشن را از حالت کامنت خارج میکنم ::
// Dotenv::load(__DIR__.'/../');
همچنین این خط را ::
// $app->withFacades();
میتوانید در این فایل اسکرول کنید و جاهایی که نیاز دارید Eloquent ،route و global middleware و service providers را پیدا کرده و فعال کنید.
Route ها و مسیریابی
بسیار خب، اکنون به فایل app/Http/routes.php در مسیر پروژه میرویم. به یاد داشته باشید که Lumen از nikic/FastRoute بجای Illuminate Router استفاده میکند بنابراین Routing ها ممکن است مقداری متفاوت به نظر برسند.
اکنون میخواهیم یک Route ایجاد کنیم تا تمامی مسیرها را گرفته و آنرا کنترل کند ::
$app->get('{path:.*}', function($path) { echo 'You just visited my site dot com slash ' . $path; });
اگر با لاراول آشنا باشید، احتمالا فهمیدید که مسیر فوق، در لاراول به شکل زیر نوشته میشود ::
$router->get('{path?}', function($path) { echo 'You just visited my site dot com slash ' . $path; })->where('path', '.*');
اساسا، ما تمامی Route ها را دریافت میکنیم و هر کدام را در متغیر path$ ذخیره میکنیم. (دوره آموزش لاراول (صفر تا صد) بروز رسانی خرداد)
پیشنهاد شگفت انگیز کدفرند،دسترسی به تمامی دوره های آموزشی کدفرند تنها با ۵۹ هزار تومان
در ادامه آشنایی با Lumen، اکنون میتوانیم API caller خود را تنظیم کنیم ::
$app->get('{path:.*}', function ($path) use ($app) { // Configure $headersToPass = ['Content-Type', 'X-Pagination']; $rootUrl = 'http://www.google.com/'; // Run $passThrough = $app->make('App\PassThrough', [$rootUrl]); $result = $passThrough->getResultsForPath($path); // Return return response( $result['body'], $result['status'], array_only( $result['headers'], $headersToPass ) ); });
توجه داشته باشید که ما در حال پاس دادن app$ هستیم که میتوانیم بوسیله آن آبجکتها را بیرون IOC container یا هرجای دیگر resolve کنیم.
Caching
نهایتا میتوانیم نتیجه را cache کنیم ::
$app->get('{path:.*}', function ($path) use ($app) { // Configure $cacheTtl = 60; $headersToPass = ['Content-Type', 'X-Pagination']; $rootUrl = 'http://www.google.com/'; // Run $result = Cache::remember( $path, $cacheTtl, function() use ($path, $app, $rootUrl) { $passThrough = $app->make('App\PassThrough', [$rootUrl]); return $passThrough->getResultsForPath($path); } ); // Return return response( $result['body'], $result['status'], array_only( $result['headers'], $headersToPass ) ); });
به این ترتیب توانستیم یک مکانیزم caching بسیار قدرتمند و سریع در برابر هر نوع سایت ایجاد کنیم. (دوره آموزش لاراول (صفر تا صد) بروز رسانی خرداد)
نتیجه گیری
Lumen همان لاراول است که برای افزایش سرعت، کوچکتر شده است. در این مقاله به بررسی و آشنایی با Lumen پرداختیم و فقط یک مثال بسیار ساده از آن به عمل آوردریم. میتوانید از مستندات docs این میکرو-فریمورک برای یادگیری بهتر و بیشتر استفاده کنید.
برچسب:cache, caching, codefriend, Lumen, PHP, آموزش Lumen, آموزش لاراول, برنامه نویسی لاراول, پلاگین های کش, کدفرند, کش, لاراول