• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
معماری در MVC
#1
سلام خدمت دوستان و اساتید محترم

من یه سوال دارم در مورد معماری و نحوه نوشتن پروژه در مدل MVC

من روشم رو براتون توضیح میدم که چیکار میکنم میخوام راهنماییم کنید ببینم درست دارم پیش میرم یا نه ...

من تو فولدر پروژم چند تا فولدر دیگه دارم به صورت زیر :
app
config
root
views
داخل app هم 2 تا فولدر دیگه هست به اسم :
controllers
Models
و همینطور چند تا فایل مثل :
model.php
controller.php
view.php
bootstrap.php
و....
حالا در فولدر root من یه فایل دارم به اسم index.php که همه چیز از اونجا شروع میشه و از اونجا من برنامه رو run میکنم که یه کلاس هست در bootsrtap.php به اسم run که url رو میگیره و اجراش میکنه

حالا نمیخوام سوال اولم خیلی پیچیده بشه ...

سوال :

وقتی url فرستاده میشه چک میشه که این url قبلا ثبت شده یا نه و اگه شده بود کلاس کنترلر مورد نظرش باز میشه و اکشن مورد نظرش صدا زده میشه(متد).حالا تو کلاس مورد نظر و متد مد نظر ما من اینجوری render رو نوشتم که سوال من اینجاست که آیا اینجوری render نوشتن درست یا نه...

فرض کنید تو کنترلر index هستیم و متد indexaction رو داریم باهاش کار میکنیم ... که 2 تا آرگومان هم بهش دادم که اولی مسیر فایل دومی data
کلاس کنترلر از کنترل اصلی در شاخه app ارث میبره و من در اونجا یه متد render هم دارم از کنترلر من رندر میکنم به کنترلر اصلی و از اونجا دوباره رندر میکنم به view به این شکل :

کلاس index در فولدر controller:
index.php
کد پی‌اچ‌پی:
<?php namespace App\Controllers;
    use 
App\Controller as Mcontroller;
    use 
App\Models\Index as Models;
    class 
Index extends Mcontroller
    
{
        public function 
indexAction($val =array())
        {
            
$data = array(
                [
'name'=>'kiarash','lname'=>'kasra','age'=>'32'],
                [
'name'=>'amin','lname'=>'ganji','age'=>'27'],
                [
'name'=>'navid','lname'=>'naghibi','age'=>'30'],
                [
'name'=>'hamid','lname'=>'baghani','age'=>'31'],
                );
            
parent::render('index.index',$data);    
        }
    } 

این کلاس کنترلر اصلی هستش تو شاخه app:
controller.php:
کد پی‌اچ‌پی:
<?php namespace App;
    class 
Controller
    
{
        public function 
__construct()
        {

        }
        public static function 
render($url,$data)
        {
            
View::render($url,$data);
        }
    } 

و این هم viewهستش باز تو شاخه app :
view.php:
کد پی‌اچ‌پی:
<?php namespace App;
    class 
View
     
{
        public static function 
render($url,$data)
        {
            
$url=str_replace('.',SEPARATOR,$url);
            
$path=VIEWPATH.strtolower($url).SUFFIX;
            if(
is_readable($path))
            {
                
ob_start();
                include 
$path;
                
$content ob_get_clean();
                include 
MASTERPAGE;
            }
            else
            {
                echo 
"Sorry,The File in View Path is not Exist";
            }
        }
    } 
حالا تا اینجای کار میخوام بدونم کارم درست هستش که از کنترلر کلاس مورد نظرم پاس میدم به کنترلر اصلی تا اون به view وصل بشه یا تو همون کلاس کنترلرم به view مستقیم وصل بشم و render کنم ؟
ممنون میشم یه توضیحی بدین تا سوال بعدی رو بتونم بپرسم

خیلی خیلی لطف میکنیدHeartHeart
  پاسخ
تشکر شده توسط :
#2
HuhHuhHuh
  پاسخ
تشکر شده توسط :
#3
خوبه من مشکلی نمیبینم Smile
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط :
#4
خوب ممنون ... پس تا اینجا مشکلی نیست ... حالا سوال دوم :
میخواستم بدونم استفاده از Twig یا موتور هایی مثل اون بهتر هستش یا استفاده از Auto load ی که خودمون بنویسیم .. و 2 اینکه استفا ده از خود Twig بهتر هستش یعتی استفاده از Syntax های خودش یا کار با خود PHP ... (صفحات رو با پسوند twig ذخیره کنیم و با syntax های twig کار کنیم یا با php ذخیره و کار کنیم )
ممنون میشم یه توضیح کامل در این مورد بدید و با دلیل که چرا ؟ ممنون
  پاسخ
تشکر شده توسط :
#5
اینی که میگید بهتر هست منظورت از چه نظر هست ؟

در کل ببین ما بدون mvc هم میتونیم برنامه بنویسیم اما خب اگر خارج از چهارچوب باشه ، سلیقه های مختلف در زمان های مختلف توش تاثیر میذاره
مثال عرض میکنم مثلا پروژه رو نوشتی و بستی و یه ماه دیگه میای روش یه قسمت اضافه میکنی ، چون منطق یک ماه پیشت جهت پیاده سازی یادت نیست این بار یه جور دیگه کاملش میکنی و کدها یکپارچگی ندارن
در کل چهارچوب یعنی محدوده یعنی قانون یعنی نظم
حالا این موتورهای قالب هم همینن
به بخش ویو یه نظم میبخشن و این خوبه ، اینکه هم خودت هم اعضای تیمت همگی سبک کدهاشون شبیه هم هست


اما من به شخصه استفاده از موتور قالب رو توصیه نمیکنم چون بیشتر از مزیتی که داره ، منابع مصرف میکنه .
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : Alaa kasbookar
#6
نقل قول:اما من به شخصه استفاده از موتور قالب رو توصیه نمیکنم چون بیشتر از مزیتی که داره ، منابع مصرف میکنه .

Like!
غایب
  پاسخ
تشکر شده توسط : Reza kasbookar
#7
ممنون خیلی لطف کردین ... جواب سوالم رو گرفتم
HeartHeart
  پاسخ
تشکر شده توسط : Reza


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان