پیش از این در معرفی ساختار پروژه دیدیم که در مسیر Core فولدری داریم تحت عنوان Interfaces که حاوی اینترفیسهای مورد نیاز در توسعهٔ کِرنِل این فریمورک است. در همین راستا، با استفاده از کامند زیر چنین پوشهای را میسازیم:
/var/www/mvc/app/Core$ mkdir Interfacesدر ادامه، اقدام به ساخت یک اینترفیس تحت عنوان ControllerInterface.php داخل این پوشه میکنیم که قرار است کلیهٔ کنترلرهای پروژه از آن ایمپلیمنت شوند:
<?php
namespace Core\Interfaces;
interface ControllerInterface
{
public function renderView($moduleType, $controllerName, $view, $data = []);
}بر اساس قانونی که در مورد نحوهٔ تعریف نِیماِسپیس فرا گرفتیم، با توجه به اینکه داخل پوشهٔ Core قرار داریم، نِیماِسپیس این فایل را به صورت Core\Interfaces تعریف میکنیم و از آنجا که پیش از این در فایل composer.json نِیماِسپیس Core را تعریف کردهایم، از این پس هر کجا که از این اینترفیس استفاده نماییم، فایل ControllerInterface.php به صورت خودکار ایمپورت خواهد شد.
| به خاطر داشته باشید |
| اجمالاً میتوان گفت که اینترفیس مشخص میسازد کلاسی که از آن ایمپلیمنت میشود میباید حاوی چه متدهایی باشد بدون آنکه دقیقاً مشخص کند هر متد بر اساس چه الگوریتمی کار خواهد کرد. به عبارت دیگر، کلاسها را موظف میسازد تا از یکسو متدهایی همنام با متدهای ایجادشده در اینترفیس داشته باشند و از سوی دیگر پارامترهای ورودی متدها با آنچه در اینترفیس آمده دقیقاً یکسان باشد. |
نیاز به توضیح نیست که شیوهٔ ساخت یک اینترفیس همچون روش ساخت کلاسها است با این تفاوت که به جای کیورد class از interface استفاده کرده سپس نام مد نظر خود را میآوریم. در اینترفیسی که تحت عنوان ControllerInterface ساختهایم، متدی داریم به نام ()renderView که این وظیفه را دارا است تا در معماری MVC که در ساخت این فریمورک مورد استفاده قرار دادهایم، ویوها را بر اساس یکسری پارامتر ورودی لود کند.
همانطورکه ملاحظه میشود، این متد چهار پارامتر ورودی میگیرد که به ترتیب با «نوع ماژول»، «نام کنترلر»، «نام ویو» و در نهایت «دیتای ارسالی» به ویو مرتبط هستند و با توجه به اینکه پارامتر آخر اختیاری است، یک مقدار پیشفرض برای آن در نظر گرفته شده است تا در صورتی که این پارامتر را پاس ندادیم، مفسر ایرادی نگیرد.
فایل دیگری که میباید داخل این پوشه بسازیم UserInterface.php نام دارد. در واقع، از این اینترفیس برای ساخت مدلها استفاده خواهیم کرد:
<?php
namespace Core\Interfaces;
interface UserInterface
{
public function fetch();
public function fetchById(int $id);
public function update(array $data);
public function delete(int $id);
}همچون روال گذشته نِیماِسپیس را تعریف کرده سپس با استفاده از کیورد interface اقدام به ساخت اینترفیسی تحت عنوان UserInterface کردهایم که حاوی چهار متد مختلف است که عبارتند از:
- متد
()fetchبه منظور فراخوانی کلیهٔ کاربران - متد
()fetchByIdبه منظور فراخوانی یک کاربر خاص بر اساس شناسهٔ کاربری - متد
()updateبه منظور آپدیت کردن اطلاعات کاربر - متد
()deleteبه منظور حذف یک کاربر بر اساس شناسهٔ کاربری
در آموزشهای آتی خواهیم دید که به چه شکل از این اینترفیس در توسعهٔ مدل User استفاده خواهیم کرد.
