تا اینجا ۴۴ تا سوال رو مطرح کردیم و پاسخ دادیم. توی این قسمت ۶۵ تا سوال رو کامل میکنیم و اینجوری یه منبع برای مرور مفاهیم لاراول داریم. به قسمتهای قبلی میتونید از طریق لینکهای زیر دسترسی داشته باشید:
بریم سراغ سوالات:
۴۵. Response در لاراول چیست؟
تمام مسیرها و کنترلرها باید یک پاسخ به مرورگر کاربر برگردانند. لاراول برای ارسال پاسخ چند راه مختلف را ارائه میکند. پایهای ترین روش برگرداندن یک رشته (string) در مسیر یا کنترلر است. لاراول باقی کارها را انجام میدهد و یک پاسخ کامل HTTP را برای کاربر ارسال میکند.
Route::get('/', function() {
return 'Hello World!;
});
۴۶. Redirect response ها را توضیح دهید.
Redirect responseها یک شیء از جنس کلاس Illuminate\Http\RedirectResponse هستند و headerهای مورد نیاز برای هدایت کردن (بخوانید redirect کردن) کاربر به یک URL دیگر را شامل میشود. راههای متعددی برای ساختن این نوع پاسخ هست که سادهترین آنها استفاده از تابع کمکی redirect در لاراول است:
Route::get('/', function() {
return redirect('home/dashboard');
});
۴۷. Response Macro چیست؟
برای تعریف کردن یک پاسخ که قابلیت استفاده مجدد در مسیرها و کنترلرهای دیگر را داشته باشد، شما میتوانید از متد macro در facade با نام Response استفاده کنید.
۴۸. View چیست؟
View یک فایل شامل HTML است که توسط اپلیکیشن شما ارائه میشود و منطق کنترلی شما را از منطق مربوط به نمایش اطلاعات جدا میکند. این فایلها در دایرکتوری resources/views ذخیره میشوند. یک فایل view ساده شامل چیزی شبیه کد زیر است:
<html>
<body>
<h1>Hello, {{$name}}</h1>
</body>
</html>
۴۹. View Composer چیست؟
View composerها یک callback یا یک متد کلاس هستند که هنگامی که view رندر میشود فراخوانی میشود. اگر دادهای دارید و میخواهید هربار که یک view رندر میشود این دادهها هم به آن وصل شوند، میتوانید با استفاده از view composer این منطق را یکجا جمع کنید.
۵۰. View Creator ها چیستند؟
View creatorها بسیار شبیه به view composerها هستند. تفاوت آنها در این است که view creator منتظر نمیماند تا view رندر شود و به محض ساخته شدن view اجرا میشوند. برای رجیستر کردن یک view creator از متد creator استفاده کنید:
View::creator('profile', 'App\Http\ViewCreators\ProfileCreator');
۵۱. URL ها را چگونه تولید میکنید؟
لاراول دارای توابع کمکیای برای تولید لینکهای اپلیکیشنتان است. از این توابع میتوانید برای ساختن لینکهای درون پاسخهای اپلیکیشن و یا برای تولید یک redirect response به بخش دیگری از اپلیکیشن استفاده کنید.
۵۲. تابع کمکی url چیست؟
شما میتوانید از تابع کمکی url برای ایجاد لینکهای دلخواه برای اپلیکیشنتان استفاده کنید. URL ساخته شده پروتوکل درخواست (HTTP/HTTPS) و مقدار host را از درخواست جاری برمیدارد.
$post = App\Models\Post::find(1);
echo url("/posts/{$post->id}");
//output: https://example.com/posts/1
۵۳. Exception ها در کدام کلاس هندل میشوند؟
تمام exception ها در لاراول، توسط کلاس App\Exceptions\Handler هندل میشوند. این کلاس شامل دو متد اصلی report و render است.
۵۴. متدهای report و render هرکدام چه کار میکنند؟
متد report برای log گرفتن از خطا یا ارسال آن به یک سرویس خارجی مثل Bugsnag یا Sentry استفاده میشود. به صورت پیشفرض، این متد اکسپشن را به یک کلاس پایه برای ذخیره لاگ ارسال میکند، اما شما میتوانید از اکسپشنهایتان هرطور که میخواهید لاگ ذخیره کنید.
متد render مسئولیت تبدیل اکسپشن به یک پاسخ مناسب HTTP را بر عهده دارد. در نهایت این پاسخ برای کاربر ارسال میشود.
۵۵. HTTP Exception ها را توضیح دهید.
برخی از اکسپشنها کد خطاهای HTTP سرور را توصیف میکنند. برای مثال خطای «مورد مورد نظر یافت نشد» (۴۰۴) یا خطای سرور (۵۰۰) تولید شده توسط توسعهدهنده.
۵۶. پکیج Monolog چیست؟
پکیج Monolog از راههای متعددی برای ذخیره log اکسپشنها پشتیبانی میکند. لاراول از این پکیج استفاده میکند و تنظیمات درایورهای مختلف لاگگیری را برای ما ساده کرده است.
۵۷. Stack channel چیست؟
به صورت پیشفرض لاراول از stack channel برای ذخیره پیامهای لاگ استفاده میکند. Stack channel برای تجمیع چند کانال لاگکیری در یک کانال استفاده میشود.
۵۸. پیشنویسهای blade یا Blade Template ها چیستند؟
Blade یک موتور پیشنویسسازی قدرتمند در لاراول است. Blade برخلاف دیگر موتورهای پیشنویسسازی، شما را در استفاده از کد PHP در فایلهای view محدود نمیکند.
۵۹. فایل تنظیمات احراز هویت لاراول در کجا قرار دارد؟
فایل تنظیمات احراز هویت در مسیر config/auth.php قرار دارد.
۶۰. Fluent query builder در لاراول چیست؟
Query builder لاراول یک رابط کاربری راحت و روان برای اجرای کوئریهای دیتابیس، در اختیار ما قرار میدهد. این قابلیت به ما اجازه میدهد اکثر عملیات های مربوط به دیتابیس را از طریق آن انجام دهیم و همچنین از دیتابیسهای مختلفی پشتیبانی میکند.
query builder لاراول از قابلیتهای PDO برای مقابله با حملات SQL injection استفاده میکند.
۶۱. Eloquent ORM لاراول چیست؟
Eloquent در لاراول یک ORM برای کار با دیتابیس است. در Eloquent لاراول معادل با هر جدول که به یک مفهوم اشاره میکند یک model داریم که برای کار با جدول استفاده میشود. Model ها به ما این امکان را میدهند که به جدولها کوئری بزنیم و یا ردیفهای جدیدی در آنها ثبت کنیم.
۶۲. لاراول از چه دیتابیسهایی پشتیبانی میکند؟
در حال حاضر لاراول از دیتابیسهای زیر پشتیبانی میکند:
- MySQL
- PostgreSQL
- SQLite
- SQL Server
۶۳. فایل تنظیمات دیتابیس در چه مسیری قرار دارد؟
فایل تنظیمات دیتابیس اپلیکیشن در مسیر config/database.php قرار دارد. در این فایل شما میتوانید تمام اتصلات دیتابیس و اتصال پیشفرض را تعریف کنید.
۶۴. Redis چیست؟
Redis یک دیتابیس key-value متن باز است. از آنجا که در Redis کلیدها میتوانند شامل string، hash، list، set و sorted set باشند، به آن سرور ساختار داده (data structure server) هم میگویند. برای یادگیری بیشتر از دوره ردیس سکانآکادمی استفاده کنید.
۶۵. در مورد Serialization توضیح دهید.
زمانی که API هایی بر اساس json میسازید، نیاز دارید تا model ها و روابط را به آرایه یا json تبدیل کنید. Eloquent متدهای مناسب این کار را در اختیار ما گذاشته است. همچنین شما میتوانید تعیین کنید که کدام ویژگیها در فراید serialization (سریالیزشن) استفاده شوند.
برای تبدیل یک model و تمام روابط آن به آرایه میتوانید از کد زیر استفاده کنید:
$user = App\Models\User::with('roles')->first();
return $user->toArray();
همچنین میتوانید یک collection شامل چندین model را به آرایه تبدیل کنید:
$users = App\Models\User::all();
return $users->toArray();
برای تبدیل model به json نیز به راحتی میتوانید از متد toJson استفاده کنید:
$user = App\Models\User::find(1);
return $user->toJson();
توی این سه مقاله ۶۵ تا از سوال مصاحبه کاری لاراول رو مرور کردیم. امیدوارم این سری مقاله براتون مفید بوده باشه و ازش استفاده کنید.