pedia-learning

ورود

گذرواژه‌تان را فراموش کرده‌اید؟

ثبت نام

ثبت نام
انجمن عمومی گسترش فناوری آگو

اگر اولین بار از انجمن بازدید می کنید برای دسترسی کامل به انجمن عضو شوید بعد عضویت قادر به ارسال مطلب و شرکت در بحث خواهید داشت

ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
MVC در PHP قسمت چهارم :: View و Controller
11-30-2013, 11:07 PM
ارسال: #1
MVC در PHP قسمت چهارم :: View و Controller
با آخرین قسمت از قسمتهای MVC در PHP در خدمتتون هستم.در این قسمت به لایه View و Controller میپردازیم.همینطور که در قسمت اول گفتم لایه View وظیفه نمایش دادن خروجی و گرفتن ورودی هارو از کاربر داره.و لایه Controller به پردازش ورودی و خروجی ها میپردازه .

لایه View

این لایه باید طوری طراحی بشه که بتونه اطلاعات رو از کاربر بگیره و به کنترلر بفرسته و در مقابل بتونه داده هایی که از سمت کنترلر میاد رو به کاربر نمایش بده.برای اینکار ما به یک کلاس نیاز داریم.یک کلاس در مسیر library بسازید و اسمش رو view بزارید :

کد php:
<?php

class View {
   
    private 
$vars = array(); 
    
    function 
set($var $data) {
        
$this->vars[$var] = $data;
    }
    
    function 
render($view) {
        
extract($this->vars);
        include 
APP_DIR.DS.'view'.DS.$view.'.php';
    }
    


این کلاس دوتا متد داره.یکی متد set که کارش اینه که متغیرهایی رو که میخواید بفرستید به view مورد نظر رو مدیریت میکنه.یکی متد render که نام view مورد نظر رو از کاربر میگیره و نمایش میده.

دقت کنید که این کلاس خیلی ساده است و برای داشتن یک ویو انعطاف پذیر باید بیشتر روش کار بشه.

حالا یک کلاس دیگه با نام Controller در مسیر library بسازید :

کد php:
<?php

class Controller {

    protected 
$view;

    function 
__construct() {
        
$this->view = new View();
    }



و کنترلر ArticleController رو از کلاس Controller ارث بری کنید و متد view رو به شکل زیر تغییر بدید :

کد php:
<?php

class ArticleController extends Controller{
    
    function 
index(){
        echo 
'IndexController -> index action';
    }
    
    function 
view($id){
        
$article Load::model("articles");
        
$row $article->get_row('*' " pro_id = $id ");
        
$this->view->set('data',$row);
        
$this->view->render('view');
    }


تا اینجا ما اطلاعات رو از دیتابیس گرفتیم و به view ارسال کردیم.حالا باید یک فایل در مسیر app/view با نام view.php بسازید و به شکل زیر میتونید با مقادیر ارسالی کار کنید :

کد php:
<!DOCTYPE html>
<
html>
    <
head>
        <
meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <
title></title>
    </
head>
    <
body>
        <?
php
            
echo $data['id'] , ' - ';
            echo 
$data['body'] , '<br>';
            echo 
$data['title'] , '<br><hr>';
        
?>
    </body>
</html> 

تا اینجای کار ما یک فریم ورک سه لایه داریم.که قسمتهای View و Model و Controller از هم جدا هستن. شیوه کار اکثر فریم ورکها بر همین مبناست اما هر چی بخواید فریم ورک کاربردی تری داشته باشن باید رنگ و لعاب بیشتری بهش بدید.مثلا در فریم ورکهای دیگه در کنار این سه قسمت قسمتهای اضافی مثل plugin و helper و … داریم که به منعطف بودن و کاربردی بودن فریم ورکمون کمک میکنه.

مثلا در لایه ویو میتونید از موتور قالب های مختلف مثل smarty , twig و … استفاده کنید. در کنار این باید فریم ورکی که مینویسید کتابخانه ی بزرگی داشته باشه که تقریبا همه نیازهای کاربر رو جواب بده و بتونه با کمترین کد نویسی از طرف کاربر بهترین نتیجه رو بگیره.
حرف آخر

این دوره از آموزشهای MVC در PHP تموم شد.در این دوره با شیوه کارکرد معماری سه لایه آشنا شدیم و تونستیم در کنار هم یک فریم ورک بنویسیم.هدف از این دوره این بود که اگر از فریم ورکهایی مثل zend , cakephp , laravel , Yii و … استفاده میکنید بفهمید که پشت این فریم ورکها چه اتفاقی داره میافته. حالا که دیدیم این فریم ورکها چطور کار میکنن شاید علاقه داشته باشید که با یکیشون شروع به کار کنید یا حتی شروع به نوشتن یک فریم ورک کنید.

چیزی که مهمه اینه که از یادگیری چیزای جدید نترسید و خودتون رو توی چالش بندازید چون فقط در این صورته که میتونید چیزای جدید یاد بگیرید.در کشور ما متاسفانه زیاد به مقوله برنامه نویسی اهمیت داده نمیشه و توی هیچ موسسه ای برنامه نویسی رو به صورت اصولی آموزش نمیدن . اما این بستگی به خودتون داره که تا چه حد عاشق برنامه نویسی باشید و با تلاش و پشتکار بتونید پله های پیشرفت رو طی کنید.

از دوستانی که هم که نظر داده بودن ممنونم و از بقیه هم ( مخصوصا اساتید بنده ) میخوام که نظرشون رو بگن . اگر جایی به مشکل برخوردید خوشحال میشم کمک کنم.اگر هم اشتباهی از من سر زده بود تذکر بدید.
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پرش به انجمن:


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


Persian Translation by MyBBIran.com - Ver: 4.1
Powered by MyBB, © 2002-2024 MyBB Group.
Theme designed by Marvel (Sidebar created by Yaldaram - Yaldaram.com)
Theme Translation by Mt Edition