کلاس BaseController
بخشی از کِرنِل این فریمورک است که این امکان را در اختیارمان میگذارد تا یک کنترلر والد داشته باشیم که سایر کنترلرها میتوانند از آن ارثبری کنند. در همین راستا، داخل پوشهٔ Core
فایلی تحت عنوان BaseController.php
حاوی محتویات زیر میسازیم:
<?php
namespace Core;
use Core\Interfaces\ControllerInterface;
class BaseController implements ControllerInterface
{
public function renderView($moduleType, $controllerName, $view, $data = [])
{
require_once "../app/$moduleType/Views/$controllerName/$view.php";
}
}
در تفسیر کدها فوق میتوان گفت که ابتدا به ساکن نِیماِسپیس این فایل را تعریف کردهایم و با توجه به اینکه کلاس BaseController
قرار است تا از اینترفیس ControllerInterface
ایمپلیمت کند، لذا نیاز است تا فایل مربوط به این اینترفیس را use
کنیم. در ارتباط با شیوهٔ use
کردن یک فایل داخل سایر فایلها، همانطور که در نمونه کد فوق میبینیم، پس از کیورد use
ابتدا نِیماِسپیس را نوشته که در این مثال Core\Interfaces
است سپس نام فایل مربوطه را بدون درج پسوند php.
مینویسیم.
حال با توجه به اینکه BaseController
از اینترفیس ControllerInterface
ایمپلیمنت شده است، لذا موظف هستیم تا کلیهٔ متدهای موجود در اینترفیس مذکور را داخل این کنترلر بسازیم و از آنجا که صرفاً یک متد داخل این اینترفیس تعریف شده است، همان متد را تحت عنوان ()renderView
با همان تعداد پارامترهای ورودی میسازیم.
تفاوتی که این متد با متد موجود در اینترفیس ControllerInterface
دارد آن است که داخل کنترلر میباید تَسکی که این متد قرار است انجام دهد را نیز مشخص سازیم و از همین روی با استفاده از دستور require_once
گفتهایم بسته به پارامترهای ورودی، فایل ویو مد نظر ایمپورت گردد.