درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من
تخفیف های وب سایت
همه تخفیف ها

عضویت در

کانال تلگرام

توسینسو

اطلاعات مطلب
مدرس/نویسنده
مهدی رزمجویی
امتیاز: 8194
رتبه:73
0
17
2
36
توسعه دهنده C# ، ++C ، PHP ، SQL ، محقق بدافزار ، توسعه دهنده آنتی ویروس پادویش ، توسعه دهنده آزمایشگاه بدافزار ، علاقمند به مهندسی معکوس پروفایل کاربر

دوره آموزشی برنامه نویسی MVC در PHP قسمت پنجم

تاریخ 56 ماه قبل
نظرات 3
بازدیدها 1921
سلام به همگی دوستان خوب طبق توضیحاتی که در قسمت اول آموزش دادم MVC دارای سه بخش Controller و View و Model هست که تا حدودی قسمت Controller انجام دادیم، فقط باید یه کلاس بنام Controller بسازیم که این کلاس میشه والد و باید ارث بری انجام بدیم ، بعد از اینکه کلاس Controller ایجاد کردیم، میریم سر وقت دو قسمت دیگه که اونارو هم به وب سایتمون اضافه کنیم . در ابتدا یه فایل به نام Controller.php توی فولدر Libs میسازیم و کدهای زیر توش مینویسیم :

<?php

class Controller
{
	function __construct()
	{
		echo "<br>Main Controller<br>";
	}
}

متن Main Controller واسه تست گذاشتم که بعداً غیرفعالش میکنیم، سپس به ابتدای کد کلاسهای About,Index.Login ، کد زیر رو اضافه میکنیم (مثلاً ابتدای کد Login بصورت زیر میشه)

class Login extends Controller

توی php واسه ارث بری از کلمه extends استفاده میشه (کلاس Login از کلاس Controller ارث میبره)
خوب حالا یه تست میکنیم :
دوره آموزشی برنامه نویسی MVC در PHP قسمت پنجم

بهمون خطا میده، میگه نتونست کلاس Controller پیدا کنه حالا واسه رفع خطا باید کدهای php فایل Index.php بصورت زیر ویرایش کنیم :

<?php

	require("libs/Controller.php");

	require("libs/Bootstrap.php");	
	$app = new Bootstrap();
	
?>

فقط خط اول میخواد اضافه کنیم . حالا یه بار دیگه تست میکنیم :
دوره آموزشی برنامه نویسی MVC در PHP قسمت پنجم

این سری بهمون خطا نداد ولی خوب چیزی هم واسمون چاپ نکرد، باید پیغام Main Controller برامون چاپ میشد، مشکل اینجاست که ما توی کد کلاس Controller گفتیم موقعی که تابع سازنده این کلاس فراخوانی میشه این پیغام چاپ بشه ولی هنوز کدی واسش ننوشتیم که این کارو انجام بده، واسه اینکار باید کد زیر رو توی تابع سازنده کلاسهای Index,Login,About بنویسیم (مثلاً کلاس سازنده Login بصورت زیر میشه)

function __construct()
{
	parent::__construct();
	
	echo "<br>Page Login ";
}

متونستیم بجای اینکه بنویسیم

parent::__construct();

این کد رو بنویسیم (هیچ فرقی نمیکنه)

Controller::__construct();

خوب حالا یه بار دیگه تست میکنیم :
دوره آموزشی برنامه نویسی MVC در PHP قسمت پنجم

دیدید که برامون پیغام Main Controller چاپ کرد، کلاس Controller به این خاطر ساختیم چون میخوایم از تکرار کدهای که قرار درآینده توی کلاسهای About,Index,Login بنویسیم جلوگیری کنیم و کدهارو فقط توی کلاس Controller بنویسیم و کلاسهای About,Index.Login با استفاده از قابلیت ارث بری از این کدها استفاده کنن (اینجوری هم کدمون ساختار بهتری پیدا میکنه، هم خطایابیش بهتر میشه و هم کمتر میخواد کد بنویسیم)
خوب میخوایم قسمت view برای وب سایتمون بسازیم واسه اینکار ابتدا باید یه فایل دیگه به نام View.php توی فولدر libs بسازیم و کدهای زیرو توش بنویسیم (در واقع داریم یه کلاس بنام view ایجاد میکنیم)

<?php

class View
{
	function __construct()
	{
		echo "<br>we are in page View";
	}
}

تابع سازنده کلاس Controller بصورت زیر ویرایش میکنیم :

function __construct()
{
	echo "<br>Main Controller<br>";
	
	$this->view = new View();
}

یه شی به نام view از نوع کلاس View میسازیم، زمانی که میخوایم یه متغیری تعریف کنیم که بتونیم توی جاهای دیگه ای از کدمون بهش دسترسی داشته باشیم، باید قبل از نام متغیر کلمه this$ قرار بدیم، خوب دوباره باید کدهای php صفحه Index.php بصورت زیر تغییر بدیم :


<?php

	require("libs/Controller.php");
	require("libs/view.php");

	require("libs/Bootstrap.php");	
	$app = new Bootstrap();
	
?>

و زمانی که یکی از صفحات سایتمون (مثلاً صفحه About) باز میکنیم بصورت زیر نمایش داده میشه :
دوره آموزشی برنامه نویسی MVC در PHP قسمت پنجم

طبق توضیحاتی که در آموزشهای قبلی دادم، توی قسمت View فقط کدهایی نوشته میشن که میخوایم اطلاعاتی یا چیزی به کاربر نمایش داده بشن (مثل قالب سایت یا تگها و ...) پس در نتیجه میایم توی فولدر Views، سه فولدر بنام های Index,About,Login میسازیم و توی هر فولدر یه فایل به نام Index.php میسازیم .
کد Index.php توی فولدر Login :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

	<div>
        <ul>
        	<li>
            	<label>نام کاربری : </label>&nbsp;
                <input type="text" id="txt_User" name="txt_User" />
            </li>   
            <li>
            	<label>رمز عبور : </label>&nbsp;
                <input type="text" id="txt_Pass" name="txt_Pass" />
            </li>    
            <li>
                <input type="submit" id="btn_Login" name="btn_Login" />
            </li>
        </ul>
    </div>

</body>
</html>

کد Index.php توی فولدر Index :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

	...........Page Index...........

</body>
</html>

کد Index.php توی فولدر About :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

	...........Page About...........

</body>
</html>

خوب حالا یه فایل Header.php و Footer.php هم توی فولدر Views میسازیم و کدهای منو سایت (با کمی تغییرات) از صفحه Index.php (فایل Index.php که توی فولدر وب سایتمون هست) انتقال میدیم به Header.php (بصورت زیر) :
کد ویرایش شده Index.php (توی فولدر وب سایتمون) :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
	

<?php

	require("libs/Controller.php");
	require("libs/view.php");

	require("libs/Bootstrap.php");	
	$app = new Bootstrap();
	
?>
</body>

</html>


کد Footer.php :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

    <div id="Footer">
        <div>
            &copy;Copyright
        </div>
    </div>

</body>
</html>

کد Header.php :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

    <div id="Header">
        <div id="MainMenu">
            <ul>
                <li>
                    <a href="Index">خانه</a>
                </li>
                <li>
                    <a href="Login">ورود</a>
                </li>
                <li>
                    <a href="About">درباره</a>
                </li>
            </ul>
        </div>
    </div>

</body>
</html>

حالا اگه یه خروجی از وب سایتمون بگیریم بصورت زیر بهمون نمایش داده میشه :
دوره آموزشی برنامه نویسی MVC در PHP قسمت پنجم

حالا باید تابع سازنده کلاس Controller بصورت زیر ویرایش کنیم :
function __construct()
{
	//echo "<br>Main Controller<br>";
	
	$this->view = new View();
}
و سپس کلاس View رو هم بصورت زیر ویرایش کنیم :
<?php

class View
{
	function __construct()
	{
		//echo "<br>we are in page View";
	}
	
	function Render($name)
	{		
		require("Views/Header.php");
		
		require("views/".$name.".php");
		
		require("Views/Footer.php");
	}
		
}
یه تابع بنام Render تعریف میکنیم و زمانی که ابن تابع فراخوانی میشه، ابتدا کدهای Header.php اجرا میشه سپس کدهای فایلی که نامش داخل متغیر name$ هست اجرا میشه و در آخر هم کدهای Footer.php اجرا میشن .
خوب حالا یه اجرا میگیریم .
دوره آموزشی برنامه نویسی MVC در PHP قسمت پنجم

باید ابتدا این پیغام ها غیر فعال بشن ، باید دستور echo رو توی تابع سازنده کلاسهای About,Index,Login غیر فعال کنیم و سپس یه خط کد به این تابع سازنده اضافه کنیم .
کد تابع سازنده کلاس About :
function __construct()
{
	parent::__construct();
	
	//echo "<br>Page About ";
	
	$this->view->Render("About/index");
}
کد تابع سازنده کلاس Index :
function __construct()
{
	parent::__construct();
	
	//echo "<br>Page Index ";
	
	$this->view->Render("Index/index");
}
کد تابع سازنده کلاس Login :
function __construct()
{
	parent::__construct();
	
	//echo "<br>Page Login ";
	
	$this->view->Render("Login/index");
}
خوب حالا یه خروجی میگیریم ببینیم چه جوری شد :
دوره آموزشی برنامه نویسی MVC در PHP قسمت پنجم

دوره آموزشی برنامه نویسی MVC در PHP قسمت پنجم

خوب میبینید که تا اینجا همه چی درسته فقط باید یه قالب کوچک براش بنویسیم تا بهتر بشه .امیدوارم از این قسمت هم استفاده لازم برده باشید، توی آموزش بعدی کار با دیتابیس آموزش میدم بهمراه ایجاد یه بخشی از قالب سایت با CSS و JQuery .

نویسنده : مهدی رزمجویی
منبع : جزیره طراحی و توسعه وب وب سایت توسینسو
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد
برچسب ها
ردیف عنوان
1 دوره آموزشی برنامه نویسی MVC در PHP قسمت اول
2 دوره آموزشی برنامه نویسی MVC در PHP قسمت دوم
3 دوره آموزشی برنامه نویسی MVC در PHP قسمت سوم
4 دوره آموزشی برنامه نویسی MVC در PHP قسمت چهارم
5 دوره آموزشی برنامه نویسی MVC در PHP قسمت پنجم
6 دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم
7 دوره آموزشی برنامه نویسی MVC در PHP قسمت هفتم
8 دوره آموزشی برنامه نویسی MVC در PHP قسمت هشتم
9 دوره آموزشی برنامه نویسی MVC در PHP قسمت نهم
10 دوره آموزشی برنامه نویسی MVC در PHP قسمت دهم
11 دوره آموزشی برنامه نویسی MVC در PHP قسمت یازدهم
12 دوره آموزشی برنامه نویسی MVC در PHP قسمت دوازدهم
13 دوره آموزشی برنامه نویسی MVC در PHP قسمت سیزدهم
14 دوره آموزشی برنامه نویسی MVC در PHP قسمت چهاردهم
دوره مجموعه کل دوره
مطالب مرتبط

در حال دریافت اطلاعات

نظرات
  • **ممنون آقا مهدی**
  • با سلام
    امیدوارم حالتون خوب باشه
    میشه لطف کنید و بگید این خط کد رو دقیقا کجا باید بنویسم؟
    class Login extends Controller
  • سلام
    این خط یعنی دارید یه کلاس بنام Login تعریف میکنید، که از کلاس Controller ارث میبره ( با استفاده از extends ارث بری میکنیم)
    حتما تو آموزشام، کلاسی بنام Login تعریف کردم به این صورت :
    class Login
    {
    ............
    }
    
    که حالا شما باید خط اولو تغییر میدید :
    class Login extends Controller
    {
    ...................
    }
    
    باید یه فولدر داشته باشی بنام Controllers .
    اونجا این کلاس تعریف شده .
    موفق باشید...
  • این پست حذف شده است
    دلیل حذف: مطلب جنبه تبلیغاتی دارد

برای ارسال نظر ابتدا به سایت وارد شوید