ساخت کلاس Routing

شرکت پلاتین ، با مقاله ساخت کلاس Routing در خدمت شما می باشد.

در بررسی ساختار فریمورکی که در این مقاله توسعه خواهیم داد، دیدیم که فولدر mvc حاوی فایل و فولدرهای زیر می باشد:

mvc
├── app
├── composer.json
├── public
└── vendor

در این مقاله ، به بررسی فولدر public پرداختیم و قصد داریم تا به بررسی فولدر app بپردازیم. برای همین منظور، در مسیر روت پروژه با استفاده از کامند زیر فولدری تحت عنوان app می‌سازیم:

/var/www/mvc$ mkdir app

پیش از این گفته شد که قرار است تا این پوشه حاوی فولدرها و فایل‌های زیر باشد:

Core
├── App.php
├── BaseController.php
├── Interfaces
│   ├── ControllerInterface.php
│   └── UserInterface.php
└── Routing.php

در همین راستا، در این مقاله قصد داریم تا فایل Routing.php را بررسی کنیم. بر اساس استاندارد PSR-4: Autoloader که در مقاله گذشته با مفهوم‌اش آشنا شدیم، ابتدا پوشه‌ای تحت عنوان Core ساخته سپس با استفاده از کامند زیر این فایل را می‌سازیم:

/var/www/mvc/app/Core$ touch Routing.php

ابتدا کدهای زیر را داخل این فایل درج نموده سپس به بررسی آن‌ها خواهیم پرداخت:

<?php
namespace Core;
class Routing
{
    public $routes = [
        [
            'route' => '',
            'module' => 'Base',
            'controller' => 'DefaultController',
            'action' => 'homepage',
        ],
        [
            'route' => 'default/homepage',
            'module' => 'Base',
            'controller' => 'DefaultController',
            'action' => 'homepage',
        ],
        [
            'route' => 'default/about',
            'module' => 'Base',
            'controller' => 'DefaultController',
            'action' => 'about',
        ],
        [
            'route' => 'default/users',
            'module' => 'Base',
            'controller' => 'DefaultController',
            'action' => 'users',
        ]
    ];

    public function __construct()
    {
        return $this->routes;
    }
}

پس از درج تگ آغازین php?> ابتدا کیورد namesapce را می نویسیم سپس نام پوشه‌ای که داخل آن قرار داریم را نوشته که در این مثال Core می باشد. در واقع، کاری که نِیم‌اِسپیس انجام می‌دهد ، این می باشد که مشخص می‌سازد فایل Routing.php دقیقاً در چه مسیری قرار داد و به کدام نِیم‌اِسپیس تعلق دارد؛ سپس در ادامه مقاله فایل composer.json را تکمیل می‌کنیم تا نِیم‌اِسپیسی تحت عنوان Core در این پروژه به رسمیت شناخته شود.

همان‌طور که می‌بینیم، کلاسی تعریف کرده‌ایم به نام Routing که حاوی یک پراپرتی تحت عنوان routes$ از جنس public می باشد که این امکان را برای‌مان فراهم می‌ کند تا از هر جای پروژه به آن دسترسی داشته باشیم. نیاز به توضیح نیست که routes$ آرایه‌ای چندبُعدی است که در آن یکسری URL پیش‌فرض تعریف کرده‌ایم به طوری که اگر کاربر هر لینکی به غیر از آنچه در کلیدهای route در این آرایه تعریف شده را در آدرس‌بار درج نماید، با ارور ۴۰۴ مواجه خواهد شد. برای مثال، آرایهٔ مربوط به هوم‌پیج سایت را مد نظر قرار می‌دهیم:

[
    'route' => 'default/homepage',
    'module' => 'Base',
    'controller' => 'DefaultController',
    'action' => 'homepage',
]

در آرایهٔ فوق ، کلیدی تحت عنوان route داریم که مشخصاً لینکی که به هوم‌پیج سایت منتج می‌شود را تعیین می‌کند. سپس کلیدی  به نام module وجود دارد که مقدار در نظر گرفته شده برای آن Base است که به منزلهٔ ماژول اصلی این فریمورک می‌باشد که در فصول آتی آن را خواهیم ساخت. کلیدهای controller و action نیز به ترتیب مشخص‌کنندهٔ کنترلر و متدی در ماژول Base هستند که پس از وارد کردن لینک default/homepage فراخوانی خواهند شد.

لازم به یادآوری می باشد کانستراکتور متدی می‌باشد که به محض ساخت یک آبجکت از روی کلاس‌مان فراخوانی خواهد شد. از همین روی، در کانستراکتور کلاس Routing.php دستور داده‌ایم تا به محض ساخت یک آبجکت از روی این کلاس، پراپرتی routes$ ریترن گردد. اکنون به منظور تست، مجدد به فایل index.php بازگشته و آن را به صورت زیر تغییر می‌‌دهیم:

<?php
ini_set('display_errors', '1');
require_once __DIR__ . '/../vendor/autoload.php';

$routingObj = new Core\Routing();
dd($routingObj);

function dd($input)
{
    echo "<pre>";
    var_dump($input);
    echo "</pre>";
    die;
}

با رفتن به مسیر http://mvc.local در مرورگر، در خروجی با ارور زیر مواجه خواهیم شد:

Fatal error: Uncaught Error: Class 'Core\Routing' not found in /var/www/mvc/public/index.php:5 Stack trace: #0 {main} thrown in /var/www/mvc/public/index.php on line 5

این ارور حاکی از آن می باشد که کلاسی با نِیم‌اِسپیس Core\Routing که در خط پنجم فایل index.php استفاده شده است یافت نشد. دلیل این مسئله آن می باشد که در فایل composer.json چنین نِیم‌اِسپیسی تعریف نشده است.

دیدگاه شما:

نوشته های مرتبط

تکنولوژی های استفاده شده در netflix | Netflix TechStack

۱۴

آذر
react, SWIFT, The best startup, اخبار, استارت اپ, بازاریابی, بازاریابی محتوا, تجارت, تحقیقات بازار, جاوا اسکریپت, طراحی اپلیکیشن

تکنولوژی های استفاده شده در netflix | Netflix TechStack

در این مقاله قصد داریم تکنولوژی های مورد استفاده در Netflix رو براتون شهر بدیم . پس ادامه مطلب رو دنبال کنید 🙂 Tech stack یا پشته فناوری به مجموعه‌ای از فناوری‌ها، زبان‌ها، ابزارها و سرویس‌هایی اشاره دارد که در […]

۲۴

اردیبهشت
هوش مصنوعی

معرفی بهترین ابزار هوش مصنوعی

ابزار هوش مصنوعی (Artificial Intelligence) به دسته‌ای از تکنولوژی‌ها گفته می‌شود که به کامپیوترها اجازه می‌دهد تا به صورت خودکار، هوشمندانه و بدون نیاز به دخالت انسان، مسائل را حل کنند و تصمیم‌هایی بگیرند. در این روش، کامپیوتر با استفاده[…]

http://platinco.ir/tag/python/

۱۴

اردیبهشت
پایتون

آموزش کتابخانه pygame

انواع روش های ساخت بازی با پایتون Python یکی از زبان‌های محبوب برای توسعه بازی است و به دلیل سادگی و قابلیت استفاده آن، توسعه دهندگان بازی‌های زیادی از آن استفاده می‌کنند. در ادامه، انواع روش‌های ساخت بازی با پایتون[…]