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

عضویت در

کانال تلگرام

توسینسو

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

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

تاریخ 57 ماه قبل
نظرات 12
بازدیدها 2457
سلام به همگی توی این قسمت میخوایم وارد بحث کلاسها بشیم و همینطور که پیش میریم با چندتا باگ دیگه برخورد میکنیم که بهتون میگم چه جوری برطرفش کنید .واسه تعریف کردن کلاس از کلمه class استفاده میشه و زمانی که توی کلاسون میخوایم تابع سازنده داشته باشیم باید اسم اون تابع رو ()construct___ بزاریم، در ابتدا یه فایل بنام Bootstrap.php توی فولدر Libs میسازیم. و کدهای زیر توش مینویسیم (در واقع داریم کلاسی بنام Bootstrap ایجاد میکنیم، در ادامه نقش این فایل رو در وب سایتمون میفهمید)
<?php
class Bootstrap
{
	function __construct()
	{
	}
}
حالا کد های php که توی فایل index.php در قسمت قبلی نوشتیمو اضافه میکنیم به فایل Bootstrap و کدهای php صفحه index.php بصورت زیر ویرایش میکنیم :
کدهای Bootstrap :
<?php

class Bootstrap
{
	function __construct()
	{
		if(!isset($_GET['url']))
		{
			$url = 'index';
		}
		else
		{
			$url = $_GET['url'];
		}
		
		$url = explode('/', $url);
		//print_r($url);
		
		if(!file_exists("Controllers/".$url[0].".php"))
		{
			echo "Not Found Page";
		}
	}	
}
کدهای php صفحه index.php :
<?php

	require("libs/Bootstrap.php");	
	$app = new Bootstrap();
	
?>
اگه بخوایم کدهای یه فایل دیگه رو توی یه فایل دیگه استفاده کنیم از تابع require استفاده میکنیم و خط دوم هم یه شی از نوع کلاس Bootstrap میسازه به نام app$ .
خوب باید سه تابع دیگه بنام های Index,About,Login ایجاد کنیم، پس کدهای زیر توی فایل های Index.php , About.php , Login.php که توی فولدر Controllers هستن مینویسیم . (توی قسمتهای قبلی آموزش، این فایل هارو ایجاد کردیم)
کد About.php :
<?php

class About
{
	function __construct()
	{
		echo "<br>Page About ";
	}
}
کد Index.php :
<?php

class Index
{
	function __construct()
	{
		echo "<br>Page Index ";
	}
}
کد Login.php :
<?php

class Login
{
	function __construct()
	{
		echo "<br>Page Login ";
	}
}
خوب حالا یه تست میکنیم ببینیم چه جوری اجرا میشه :
دوره آموزشی برنامه نویسی MVC در PHP قسمت چهارم

طبق کدی که من توی کلاس About نوشتم باید زمانی که صفحه about باز میشه متن Page About برام چاپ بشه ولی نشد، مشکل کجاست ؟
باید توی کلاس Bootstrap کدی بنویسیم تا برنامه بفهمه زمانی که توی URL آدرس صفحات سایت تایپ میشه، محتویات اون صفحه نمایش داده بشه .
بعد از آخرین دستور If ، یه else اضافه میکنیم که کدش بصورت زیر میشه :
if(!file_exists("Controllers/".$url[0].".php"))
{
	echo "Not Found Page";
}
else
{
	$file = "controllers/".$url[0].".php";
	require($file);
	$controller = new $url[0]();
}
کد بالا چک میکنه اگه URL ی بنویسیم که وجود نداره خطا بده، در غیر این صورت صفحه مورد نظر نشون بده و در اینجا مقدار [0]url$ برابر about هست، در نتیجه زمانی که کد اجرا میشه ()about بجای ()[0]url$ قرار میگیره و صفحه about نمایش داده میشه .
دوره آموزشی برنامه نویسی MVC در PHP قسمت چهارم

میبینید که جواب داد میتونید بقیه صفحه هارو هم امتحان کنید و اگه url ی وارد کنیم که صفحه ش وجود نداره بهمون خطا میده .
حالا اگه آخر کد Bootstrap و کد About بصورت زیر تغییر بدیم :
کد Bootstrap :
else
{
	$file = "controllers/".$url[0].".php";
	require($file);
	$controller = new $url[0]();
	$controller->$url[1]();	
}
کد About :
<?php

class About
{
	function __construct()
	{
		echo "<br>Page About ";
	}
	
	function AboutMe()
	{
		echo '<br>........About Me..........<br>';
	}
}
اگه URL بصورت زیر وارد کنیم نتیجه اینجوری میشه :
دوره آموزشی برنامه نویسی MVC در PHP قسمت چهارم

Aboutme بعنوان یکی از توابع کلاس About هست ، که اینجوری توی URL میشه بهش دسترسی داشت .
اگه این سری URL بصورت زیر وارد کنیم :
دوره آموزشی برنامه نویسی MVC در PHP قسمت چهارم

نتیجه اینه که کلی به ما خطا میده ، کدهای Bootstrap بصورت زیر ویرایش میکنیم تا دیگه بهمون خطا نده .
else
{
	$file = "controllers/".$url[0].".php";
	require($file);
	$controller = new $url[0]();
	if(!empty($url[1]))
	{
		$method_name = $url[1];
		if(method_exists($controller, $method_name))
		{
			$controller->$method_name();
		}
		else
		{
			echo "<br>method not found<br>";
		}
	}	
}
تابع empty چک میکنه که آیا مقداری توی متغیر وجود داره یا نه . (با تابع isset فرق میکنه)
یه متغیر بنام methodname$ تعریف کردم و مقدار [1]url$ داخل میریزم و بعد با تابع methodexists چک میکنم که آیا تابعی با این نام (یعنی مقدار داخل method_name$) توی کلاس وجود داره یا نه ؟! اگه وجود داشت تابع رو فراخوانی میکنه وگرنه به ما خطای method not found میده . (توی زبانهای برنامه نویسی دیگه زمانی که میخواستیم به توابعی از یه کلاس دسترسی داشته باشیم بعد از نام اون کلاس کاراکتر "." میزاشتیم و بعد نام تابع، ولی اینجا به جای "." از "<-" استفاده میشه)
خوب حالا اگه خواستیم یه مقدار به تابعی که توی کلاسمون ایجاد کردیم بدیم و اون تابع بر حسب مقداری که بهش دادیم اعمالی رو انجام بده باید کدهارو کمی تغییر بدیم :
تابع Aboutme یا بصورت زیر تغییر میدیم :
function AboutMe($str = false)
{
	if($str == true)
	{
		echo '<br>........'.$str.'..........<br>';
	}
	else
	{
		echo '<br>........About Me..........<br>';
	}
}
یا هم بصورت زیر :
function AboutMe($str = '')
{
	if(empty($str) == false)
	{
		echo '<br>........'.$str.'..........<br>';
	}
	else
	{
		echo '<br>........About Me..........<br>';
	}
}
کد Bootstrap :
if(!empty($url[1]))
{
	$method_name = $url[1];
	if(method_exists($controller, $method_name))
	{
		if(!empty($url[2]))
		{
			$parametr = $url[2];
			$controller->$method_name($parametr);
		}
		else
		{
			$controller->$method_name();
		}
	}
	else
	{
		echo "<br>method not found<br>";
	}
}
یه متغیر بنام parametr$ تعریف کردم، که اگه مقداری توی [2]url$ بود این مقدار ریخته میشه توی متغییر parametr$ و به عنوان پارامتر تابع استفاده میشه .
دوره آموزشی برنامه نویسی MVC در PHP قسمت چهارم


امیدوارم از این قسمت هم استفاده لازم برده باشید .

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

برچسب ها
ردیف عنوان
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 قسمت چهاردهم
دوره مجموعه کل دوره
مطالب مرتبط

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

نظرات
  • با سلام . بابت آموزش خوبتون بسیار سپاسگزارم. یه سوال داشتم من همه ی مراحل بالا و رفتم ولی وقتی آدرس about و توی url وارد میکنم خطای زیر و میده
    undefined variable url in c:wamp\www\php-mvc\index.php
    لطفا راهنماییم کنید
  • اشکال کلاس bootstrap چیه؟
    class Bootstrap
    {
    	
        function __construct()
    {
            if(!isset($_GET['url']))
            {
                $url = 'index';
            }
            else
            {
                $url = $_GET['url'];
            }
             
            $url = explode('/',$url);
            //print_r($url);
             
            if(!file_exists("Controllers/".$url[0].".php"))
            {
                echo "Not Found Page";
            }
    		else{$file = "controllers/".$url[0].".php";
        require($file);
        $controller = new $url[0]();
    	   
       if(!empty($url[1]))
    {
        $method_name = $url[1];
        if(method_exists($controller,$method_name))
        {
            if(!empty($url[2]))
            {
                $parametr = $url[2];
                $controller->$method_name($parametr);
            }
            else
            {
                $controller->$method_name();
            }
        }
        else
        {
            echo "<br>method not found<br>";
        }
    }   
    		
    		
    		}
    	
    	}
    	 } 
    
    
  • با سلام
    اگه از قسمت اول آموزش ها رو دنبال کرده باشید نباید به خطا بر بخورید، این خطا میگه متغییر url تعریف نشده یا وجود نداره توی صفحه index.php (توی پوشه اصلی سایت)، توی صفحه index.php از متغیر url استفاده کردید که باید قبلش تعریفش کنید ، اوایل آموزشها از این متغیر توی صفحه index.php استفاده کردیم که بعدش پاکش کردیم،در کل لازم نیست از متغیر url توی index.php استفاده کنید .
  • کدای bootstrap ودرست نوشتم؟
  • کدای bootstrap تون مشکلی نداشت، مشکل توی کدای index.php (توی پوشه اصلی سایت) هست .
  • اگه لطف کنید و کدای کلاس bootsrap و بفرستید ممنون میشم. آخه چون چند بار تغییراتی توی این کدا دادید گیج شدم و فک میکنم توی کدای این قسمت اشتباه کردم. بازم ممنون.
  • واقعا عذر میخام که اینقد سوال میپرسم اما هر کدوم از صفحا رو که اجرا می گیرم این خطا رو میده.
    syntax error, unexpected $method-name(t_VARIABLE ) in c:\ wamp \www\ php-mvc\libs \bpptstraps
    دیگه واقعا نمیدونم باید چی کار کنم
  • خواهش میکنم
    بخاطر اینکه توی هر قسمت وب سایت کاملتر میکنیم مجبوریم هی تغییرات توی کدای سایت بدیم ، ولی اگه با دقت آموزش هارو دنبال کنید به مشکل بر نمیخورید .
    کارایی که از قسمت اول تا چهارم انجام دادیم آپلود کردم میتونید از این لینک دانلود کنید .
    موفق باشد ...
  • خیلی لطف کردید. متشکرم.
  • سلام خیلی ممنون استفاده کردم.
  • سلام خیلی ممنون استفاده کردم.
  • جدیدا موندم چرا همه ی اموزش دهنده ها سعی دارن خودمونی بنویسن
    هی از جملات محاوره ای و خاطره گویی استفاده کنن
    و بعدش حتی یه ادیت هم نمیکنن ببین جملات ایراد داره یا نه
    جمله طرف رو میخونی باید 15 بار بخونی تا بفهمی اره منظور این بوده....
    بعد اینجور نظرای انتقادی رم به چیز میگرن و
    فقط نظراتی که گفتن وای تو چقدر خوبی عزیزدلم و... رو چاپ میکنن

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