Mr.Moghadam
سه شنبه 17 اسفند 1389, 13:24 عصر
آموزش ساخت فریم ورک MVC
سلام
احتمالا همه در باره معماری سه لایه شنیدن و شاید باهاشون کار هم کرده باشید.ولی مثل خودم ممکنه هنوز درک درستی از معماری MVC برای بعضیا جا نیافتاده باشه.برای اینکه بفهمم این معماری واقعا چجوری کار میکنه تصمیم گرفتم تا فریم ورک کوچیک رو با هم پیاده سازی کنیم.
اینجا میتونید در مورد اینکه MVC چی هست اطلاعات بیشتری به دست بیارید (http://barnamenevis.org/showthread.php?277873-%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D9%85%D9%81%D9%87%D9%88%D9%85-MVC)
قبل از هر چیز باید یه سری قوانین نامگذاری برای فریم ورکمون قرار بدیم :
1- نام کلاس کنترلرها باید با حرف بزرگ شروع بشه وبا Controller ادامه پیدا کنه.
class UserController extends Controller
2- نام فایل کنترلر ها که در پوشه app/Controllers/ قرار میگیره باید به صورت زیر باشه
user_controller.php
3- نام کلاس model که داخل پوشه app/Models قرار میگیره باید با نام جدولمون یکی باشه و با حروف بزرگ نوشته بشه.
خوب میگم تا اینجا اینارو داشته باشید کم کم که رفتیم جلو با کمک شما قوانین رو اضافه میکنیم.
خوب ابتدا از ساختار پوشه ها شروع میکنیم
Root/
app/
/Controllers
/Models
/Views
core/
config/
library/
.htaccess
Index.php
حالا میریم سراغ فایل .htaccess و کدهای زیر داخلش مینویسیم :
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]
توی کدهای بالا خط اول و دوم چک میکنه که اگر url که درخواست شده فایل یا پئشه نبود اونوقت نام فایل index.php رو بیا از url حذف کن.
حالا فایل index.php که شامل کدهای زیر میشه :
<?php
define("ROOT",dirname(__FILE__));
define("DS",DIRECTORY_SEPARATOR);
define("BASE_URL","http://127.0.0.1/ar/");
$base = "/";
include (ROOT.DS."core".DS."Sql.php");
include (ROOT.DS."core".DS."Model.php");
include (ROOT.DS."core".DS."Base.php");
include (ROOT.DS."core".DS."Controller.php");
include (ROOT.DS."core".DS."load.php");
$url = $_SERVER['REQUEST_URI'] ;
$url = str_replace($base,"",$url);
$url = explode("/",$url);
$uri['controller'] = $url[0];
$uri['model'] = ($uri['controller']);
array_shift($url);
$uri['action']= $url[0];
array_shift($url);
$uri['param'] = $url;
$base = new Base();
$base->uri = $uri;
$base->load_controller();
فکر میکنم توی این فایل همه چیز واضح باشه .
طرز کار کلی فریم ورکها به این صورته که قسمت اول url مربوز به کنترلر میشه قسمت دومش مربوط به نام اکشنی (تابع) که میخواد اجرا بشه میشه و باقی قسمتها مربوط به پارامترهای اکشن مورد نظره.
http://www.example.com/user/login
که user نام کنترلرمون هست و login نام اکشن یا تابع .
ما اومدیم از خط 8 تا خط 16 url رو با کاراکتر "/" از هم جدا کردیم و قسمت اولش رو کنترلر ، قسمت دومش رو اکشن و باقیش رو پارامترهای ارسالی به اکشن در نظر گرفتیم.
در خط 19 هم درون متغیر uri از کلاس base قرار دادیم.
ودر خط 20 اومدیم کنترلر مورد نظرمون رو لود کردیم.
خوب تا اینجاش رو داشته باشید تا قسمت دوم رو هم قرار بدم
موفق باشید
سلام
احتمالا همه در باره معماری سه لایه شنیدن و شاید باهاشون کار هم کرده باشید.ولی مثل خودم ممکنه هنوز درک درستی از معماری MVC برای بعضیا جا نیافتاده باشه.برای اینکه بفهمم این معماری واقعا چجوری کار میکنه تصمیم گرفتم تا فریم ورک کوچیک رو با هم پیاده سازی کنیم.
اینجا میتونید در مورد اینکه MVC چی هست اطلاعات بیشتری به دست بیارید (http://barnamenevis.org/showthread.php?277873-%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D9%85%D9%81%D9%87%D9%88%D9%85-MVC)
قبل از هر چیز باید یه سری قوانین نامگذاری برای فریم ورکمون قرار بدیم :
1- نام کلاس کنترلرها باید با حرف بزرگ شروع بشه وبا Controller ادامه پیدا کنه.
class UserController extends Controller
2- نام فایل کنترلر ها که در پوشه app/Controllers/ قرار میگیره باید به صورت زیر باشه
user_controller.php
3- نام کلاس model که داخل پوشه app/Models قرار میگیره باید با نام جدولمون یکی باشه و با حروف بزرگ نوشته بشه.
خوب میگم تا اینجا اینارو داشته باشید کم کم که رفتیم جلو با کمک شما قوانین رو اضافه میکنیم.
خوب ابتدا از ساختار پوشه ها شروع میکنیم
Root/
app/
/Controllers
/Models
/Views
core/
config/
library/
.htaccess
Index.php
حالا میریم سراغ فایل .htaccess و کدهای زیر داخلش مینویسیم :
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]
توی کدهای بالا خط اول و دوم چک میکنه که اگر url که درخواست شده فایل یا پئشه نبود اونوقت نام فایل index.php رو بیا از url حذف کن.
حالا فایل index.php که شامل کدهای زیر میشه :
<?php
define("ROOT",dirname(__FILE__));
define("DS",DIRECTORY_SEPARATOR);
define("BASE_URL","http://127.0.0.1/ar/");
$base = "/";
include (ROOT.DS."core".DS."Sql.php");
include (ROOT.DS."core".DS."Model.php");
include (ROOT.DS."core".DS."Base.php");
include (ROOT.DS."core".DS."Controller.php");
include (ROOT.DS."core".DS."load.php");
$url = $_SERVER['REQUEST_URI'] ;
$url = str_replace($base,"",$url);
$url = explode("/",$url);
$uri['controller'] = $url[0];
$uri['model'] = ($uri['controller']);
array_shift($url);
$uri['action']= $url[0];
array_shift($url);
$uri['param'] = $url;
$base = new Base();
$base->uri = $uri;
$base->load_controller();
فکر میکنم توی این فایل همه چیز واضح باشه .
طرز کار کلی فریم ورکها به این صورته که قسمت اول url مربوز به کنترلر میشه قسمت دومش مربوط به نام اکشنی (تابع) که میخواد اجرا بشه میشه و باقی قسمتها مربوط به پارامترهای اکشن مورد نظره.
http://www.example.com/user/login
که user نام کنترلرمون هست و login نام اکشن یا تابع .
ما اومدیم از خط 8 تا خط 16 url رو با کاراکتر "/" از هم جدا کردیم و قسمت اولش رو کنترلر ، قسمت دومش رو اکشن و باقیش رو پارامترهای ارسالی به اکشن در نظر گرفتیم.
در خط 19 هم درون متغیر uri از کلاس base قرار دادیم.
ودر خط 20 اومدیم کنترلر مورد نظرمون رو لود کردیم.
خوب تا اینجاش رو داشته باشید تا قسمت دوم رو هم قرار بدم
موفق باشید