ساخت لایهٔ Controller


تا این مرحله از دورهٔ آشنایی با معماری MVC با موفقیت توانسته‌ایم تا لایه‌های View و Model را پیاده‌سازی نماییم؛ حال در این آموزش قصد داریم تا به توسعهٔ لایهٔ Controller بپردازیم که این وظیفه را دارا است تا مابین دو لایهٔ دیگر ارتباط برقرار سازد. برای این منظور، پوشه‌ای تحت عنوان Controllers ساخته و فایلی تحت عنوان DefaultController.php با محتویات زیر داخل آن ایجاد می‌کنیم:

<?php
namespace Base\Controllers;

use Core\BaseController;

class DefaultController extends BaseController
{
    public function homepage()
    {}

    public function about($param = null)
    {}

    public function notfound()
    {}

    public function users()
    {}
}

طبق روال معمول،‌ ابتدا به ساکن اقدام به درج نِیم‌اِسپس این فایل می‌کنیم و با توجه به اینکه قرار است در این فایل از کلاس‌های User ،Database و BaseController استفاده نماییم، آن‌ها را use می‌کنیم.

نامی مشابه نام فایل تحت عنوان DefaultController برای این کلاس در نظر گرفته و این در حالی است که این کنترلر کلیهٔ خصوصیات خود را از کلاس BaseController به ارث خواهد برد؛ به عبارتی، از این پس می‌توانیم از ویژگی‌های کلاس BaseController که حاوی کدهای زیر است در کنترلر خود استفاده نماییم:

<?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";
    }
}

همان‌طور که قبلاً در حین نوشتن این کلاس توضیح دادیم، فانکشن ()renderView این وظیفه را دارا است تا بر اساس پارامترهایی که می‌گیرد، ویوی مرتبط را ایمپورت نماید. داخل کلاس DefaultController چهار متد یا اَکشن مختلف داریم که عبارتند از:

- متد ()homepage به منظور نمایش هوم‌پیج سایت
- متد ()about به منظور نمایش صفحهٔ دربارهٔ ما
- متد ()notfound به منظور نمایش صفحهٔ 404
- متد ()users به منظور نمایش لیست کاربران

این بخش از محتوا مخصوص کاربرانی است که ثبت‌نام کرده‌اند.
جهت مشاهدهٔ این بخش از محتوا لاگین نمایید.

در این آموزش به تکمیل لایهٔ Controller در معماری MVC پرداختیم که این وظیفه را دارا است تا نقش پلی ارتباطی مابین ویو و مدل را بازی نماید به طوری که در تکمیل اَکشن مرتبط با لیست کاربران، به بررسی این موضوع پرداختیم که به چه شکل می‌توان ابتدا دیتا را از طریق مدل از دیتابیس فراخوانی کرده سپس آن‌ را در اختیار ویو گذاشته و ویو هم در قالب یک صفحهٔ اچ‌تی‌ام‌اس ساده لیست کاربران را به نمایش بگذارد.


لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
erfan.ab9898
erfan.ab9898
۱۳۹۹/۰۶/۰۴
use Base\Config\Database;
use Base\Models\User;
این دو خط رو نباید بنویسیم ؟ وقتی داریم یک obj می‌سازیم از database و user ?
مجتبی دانشی
مجتبی دانشی
۱۳۹۸/۰۳/۰۶
به نام خدا
با سلام و عرض تشکر

در قسمت

مثال استرینگ about را در نظر گرفته‌ایم.

طبق مثال homepage را در نظر گرفته اید.

به نظرم کل مطالب و بخصوص مطالب پرمیوم ارزش پولی شدن رو دارن.

با تشکر