کنترلرها در فریمورک فلر

در فریمورک فلر، کنترلرها مسئول مدیریت منطق اصلی برنامه و بازگرداندن پاسخ مناسب به درخواست‌های ورودی هستند. کنترلرها در پوشه Controllers/ قرار می‌گیرند و معمولاً از کلاس پایه BaseController ارث‌بری می‌کنند.

نمونه کنترلر

در اینجا نمونه‌ای از یک کنترلر ساده آورده شده است:


<?php
namespace Controllers;

class Home extends BaseController
{
    public function index()
    {
        $data = ['title' => 'خوش آمدید'];
        return $this->latte('page/index', $data);
    }

    public function portfolio()
    {
        return $this->latte('page/portfolio');
    }
}
    

در این نمونه:

  • متد index() یک صفحه خوشامدگویی را نمایش می‌دهد.
  • متد portfolio() صفحه نمونه‌کارها را نمایش می‌دهد.

اتصال کنترلرها به مسیرها

برای اتصال کنترلرها به مسیرهای خاص از سیستم مسیریابی استفاده می‌شود. برای مثال:


$router->get('/','Home@index');
$router->get('/portfolio','Home@portfolio');
    

مقدمه‌ای بر میدلورها (Middleware)

میدلورها لایه‌هایی از کد هستند که قبل از رسیدن درخواست به کنترلر اجرا می‌شوند. آن‌ها می‌توانند برای اعتبارسنجی دسترسی، احراز هویت، لاگ‌گیری و بسیاری وظایف دیگر استفاده شوند.

نمونه ساخت میدلور

در زیر یک نمونه ساده از یک میدلور برای فیلتر کردن دسترسی به صفحات خاص آورده شده است:


<?php
namespace Middlewares;

class AdminFilter
{
    public static function filter()
    {
        if (empty($_SESSION['id'])) {
            die("You don't have access");
        }
    }
}
    

این میدلور بررسی می‌کند که آیا شناسه کاربری در جلسه (Session) وجود دارد یا خیر. اگر نباشد، دسترسی مسدود می‌شود.

اتصال میدلور به مسیرها

برای اتصال یک میدلور به یک یا چند مسیر می‌توانید از متد before() در مسیریاب استفاده کنید:


$router->before('GET|POST', '/about', function() {
    \Middlewares\AdminFilter::filter();
});
    

در اینجا:

  • قبل از دسترسی به مسیر /about، میدلور AdminFilter اجرا می‌شود.
  • در صورت عدم احراز هویت، پیام خطا نمایش داده شده و اجرای برنامه متوقف می‌شود.

مزایای استفاده از میدلورها

  • جدا کردن منطق امنیت و مدیریت دسترسی از کنترلرها.
  • افزایش خوانایی و نگهداری آسان‌تر کدها.
  • امکان استفاده مجدد از میدلورها در چندین مسیر.
\/