جلسه سوم | ساخت یک پروژه mvc در php
ساخت کنترلر و ویو
داخل جلسه قبل یه چیزایی در مورد کنترلر گفتم و اینکه چطور از طریق روت بهش متصل بشیم ولی کنترلر خیلی کار ها میتونیم باهاش انجام بدیم 🙂 اصولا تو کنترلر تمام کارها غیر از کار با دیتا بیس رو باید انجام بدیم ولی تو لاراول یا کدایگنایتر ما میتونیم کارهای ک تو مدل انجام میدیم هم توش پیاده کنیم و مارو محدود نمیکنه !
اصولا ما کنترلر رو از کنترلر هسته جدا مینویسم مثلا پیام ها و اطلاعات ویو فرستاده میشه , ریدایرکت , دانلود یه فایل و ولیدیشن ورودی ها و… توش انجام میدیم تا از تکرار پرهیز کنیم .
خب جلسه پیش ما به کنترلر متصل شدیم مثلا ما یه اینطور Route ی داریم :
Route::get("/" , "MainController@index");
و به این کنترلر متصل شدیم
class MainController{
public function index()
{
}
}
خب ما یه کلاس کنترل به عنوان هسته میسازیم کار این کلاس اینه که به عنوان هسته داخل هر کنترلر لود بشه من داخل این کلاس یه متد درست میکنم که بیاد فایل های view منو لود کنه و متغییر ها رو به ویو بفرسته : دقت کنید فایل پس من یه پروپرتی داخل این کلاس درست کردم که نام پوشه منو نشون میده ! و من باید به پوشه برم و فایل هامو داخل صفحه require کنم .
class Controller {
protected $resourcePath = "Resources" ;
public function view(string $filename , array $datas = [])
{
foreach ($datas as $data => $value ) {
$$data = $value ;
}
$path = __DIR__ . sprintf("%s\\%s.php" , $this->resourcePath , $filename ) ;
if (file_exists($path)) {
require_once $path ;
}
}
}
و در mainController کلاس بالا رو ارث میبریم و با متد ویو اطلاعات رو به view میفرستیم
class MainController extends Controller
{
public function index()
{
$this->view("main" , [ 'hello' => "Hello Mvc"] ) ;
}
}
بهتره فایل ضمیمه رو دانلود کنید یه نمونه از جایی که پیش رفتیم 🙂
احتمال داره گیج شده باشید ولی فایل ضمیمه خیلی خوب و مرتب نشون میده ما چطور و کجا ماجرا رو پیش رفتیم . البته میگم بهترین کار تمرین هستش و این روش من برای پیاده سازی یه پروژه mvc هستش فایل های مرتب و هر فایل در جایی خودش قرار داره 😀