پیش از این در معرفی ساختار پروژه دیدیم که در مسیر 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
استفاده خواهیم کرد.