کلاس 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 ایمپلیمت (Implement) کند، لذا نیاز است تا فایل مربوط به این اینترفیس را use کنیم. در ارتباط با شیوهٔ use کردن یک فایل داخل سایر فایلها، همانطور که در نمونه کد فوق میبینیم، پس از کیورد use ابتدا نِیماِسپیس را نوشته که در این مثال Core\Interfaces است سپس نام فایل مربوطه را بدون درج پسوند php. مینویسیم.
حال با توجه به اینکه BaseController از اینترفیس ControllerInterface ایمپلیمنت شده است، لذا موظف هستیم تا کلیهٔ متدهای موجود در اینترفیس مذکور را داخل این کنترلر بسازیم و از آنجا که صرفاً یک متد داخل این اینترفیس تعریف شده است، همان متد را تحت عنوان ()renderView با همان تعداد پارامترهای ورودی میسازیم.
تفاوتی که این متد با متد موجود در اینترفیس ControllerInterface دارد آن است که داخل کنترلر میباید تَسکی که این متد قرار است انجام دهد را نیز مشخص سازیم و از همین روی با استفاده از دستور require_once گفتهایم بسته به پارامترهای ورودی، فایل ویو مد نظر ایمپورت گردد.
