PDA

View Full Version : آموزش شی گرایی در php



reza_alie
جمعه 07 فروردین 1394, 19:26 عصر
با عرض سلام و ادب خدمت همه دوستان
با کسب اجازه از مدیریت محترم و اساتید گرانقدر بنده قصد دارم در قسمت شی گرایی رو آموزش بدم
امیدوارم که مورد پسند همه دوستان واقع بشه
:لبخندساده:

reza_alie
شنبه 08 فروردین 1394, 14:14 عصر
یکی از مشکلات برنامه نویسی فراموشی syntaxو سلسله مراتب توابع زبان برنامه نویسی می باشد.
شعار برنامه نویسی شی گرا "دنیا را آنچنان که هست برنامه نویسی کنیم" می باشد.
و phpبه مانند سایر زبان های برنامه نویسی سعی در مدل کردن برنامه ها،مطابق دنیای پیرامون می باشد که مدل کردن دنیای پیرامون در ساختار کامپیوتر را شی گرایی می گویند.
مفهوم شی:
مهمترین مولفه در برنامه نویسی شی گرا می باشد شی در برگیرنده ویژگی ها و رفتار های یک موجودیت می باشد.به عنوان مثال در یک buttonمی تواند یک شی باشد ای نشی هم ویژگی هایی دارد و هم رفتار.
اعضای یک شی:
شی از ترکیب ویژگی ها و رفتار ها (توابع) ایجاد شده است .تابع عضو یک شی را متد می گویند.که متغیر ها و متد ها را می توان در سه حوزه (seope)تعریف کرد.و حوزه دسترسی مشخص می کندکه اشیا دیگر می توانند به آن متغیر ها دسترسی داشته باشند یا نه؟ که در ادامه به بررسی این سه حوزه می پردازیم.
نحوه تعریف کلاس:



Class my_class
//my_class:نام کلاس
{
//محل تعریف متغیر ها و متدها
}



مثال عملی:
می خواهیم دراین بخش یک کلاسی تعریف کنیم که شامل یک سری متد ها و متغیر ها می باشد.
کاربر یک رشته ای را وارد می کند اگر داخل رشته علامت* بود به && تبدیل کند:
کد php:


/**
*in the name of allah
*author:reza_alie
*/

class myclass
{

function replace_str($str_input)
{
return str_replace('*', '&&', $str_input);//سه پارامتر می گیرد که اولی مقداری که می خواهیم به دنبال آن بگردیم و پارامتر دوم مقدار جایگزینی است و پارامتر سوم رشته ورودی می باشد str_replaceهمانطور که می دانید تابع
}
}
$myclass=new myclass();// برای درست کردن یک شی از یک کلاس از کلمه کلیدی new استفاده میکنیم

echo $myclass->replace_str("this *is *test");//برای دسترسی به متد های یک کلاس از علامت->استفاده می کنیم

/**
*
*output : this &&is &&test
*/

reza_alie
شنبه 08 فروردین 1394, 14:45 عصر
مثال دوم برای درک بهتر:



class myclass
{
var $text="this is test";
/**
برای تعریف متغیری به نام
$text
از کلمه کلیدی
var
استفاده می کنیم .

*/
function do_print()
{
echo $this->text;
/**
برای فراخوانی متد ها یا متغیر های شی بایستی از کلمه کلید
$this->
استفاده کنیم
*/
}
}
$myclass=new myclass();
//$myclass->text="im reza alie";
//برای ریختن مقدار جدید در متغیر می توانیم از کد فوق استفده کنیم
$myclass->do_print();

Pedram77
یک شنبه 09 فروردین 1394, 15:47 عصر
ارث بری :


class Student extends Human
{
// methods and properties
}


رابط (Interface) :



interface HumanActions
{
public function eat();
public function sleep();
public function run();
}

class Human implements HumanActions
{
public function eat()
{

}
// etc ...
}

emperatorphp
شنبه 15 فروردین 1394, 15:28 عصر
یکی از مشکلات برنامه نویسی فراموشی syntaxو سلسله مراتب توابع زبان برنامه نویسی می باشد.
شعار برنامه نویسی شی گرا "دنیا را آنچنان که هست برنامه نویسی کنیم" می باشد.
و phpبه مانند سایر زبان های برنامه نویسی سعی در مدل کردن برنامه ها،مطابق دنیای پیرامون می باشد که مدل کردن دنیای پیرامون در ساختار کامپیوتر را شی گرایی می گویند.
مفهوم شی:
مهمترین مولفه در برنامه نویسی شی گرا می باشد شی در برگیرنده ویژگی ها و رفتار های یک موجودیت می باشد.به عنوان مثال در یک buttonمی تواند یک شی باشد ای نشی هم ویژگی هایی دارد و هم رفتار.
اعضای یک شی:
شی از ترکیب ویژگی ها و رفتار ها (توابع) ایجاد شده است .تابع عضو یک شی را متد می گویند.که متغیر ها و متد ها را می توان در سه حوزه (seope)تعریف کرد.و حوزه دسترسی مشخص می کندکه اشیا دیگر می توانند به آن متغیر ها دسترسی داشته باشند یا نه؟ که در ادامه به بررسی این سه حوزه می پردازیم.
نحوه تعریف کلاس:



Class my_class
//my_class:نام کلاس
{
//محل تعریف متغیر ها و متدها
}



مثال عملی:
می خواهیم دراین بخش یک کلاسی تعریف کنیم که شامل یک سری متد ها و متغیر ها می باشد.
کاربر یک رشته ای را وارد می کند اگر داخل رشته علامت* بود به && تبدیل کند:
کد php:


/**
*in the name of allah
*author:reza_alie
*/

class myclass
{

function replace_str($str_input)
{
return str_replace('*', '&&', $str_input);//سه پارامتر می گیرد که اولی مقداری که می خواهیم به دنبال آن بگردیم و پارامتر دوم مقدار جایگزینی است و پارامتر سوم رشته ورودی می باشد str_replaceهمانطور که می دانید تابع
}
}
$myclass=new myclass();// برای درست کردن یک شی از یک کلاس از کلمه کلیدی new استفاده میکنیم

echo $myclass->replace_str("this *is *test");//برای دسترسی به متد های یک کلاس از علامت->استفاده می کنیم

/**
*
*output : this &&is &&test
*/




سلام چرا این دستور کار نمیکنه؟میشه راهنمایی کنی؟

class myclass{
function replace_str($str_input) {
return str_replace("-","_",$str_input);
}
}
if (isset ($_POST["btnsabt"]) && isset ($_POST["mytext"]) ) {
$replacer = new myclass();
$reste=$_POST["mttext"];
echo $replacer->replace_str($reste);
}
?>
<form method="post">
<input type="text" name="mytext">
<input type="submit" name="btnsabt">
</form>

reza_alie
شنبه 15 فروردین 1394, 15:48 عصر
برای این که از کلاس نمونه سازی نکردید


$myclass=new myclass();
$myclass->replace_str("");



تشکر =رضایت

meysam1366
شنبه 15 فروردین 1394, 18:00 عصر
$replacer = new myclass();
$reste=$_POST["mttext"];
echo $replacer->replace_str($reste);

سلام

پس این چیه؟:متفکر::متفکر:

emperatorphp
شنبه 15 فروردین 1394, 21:17 عصر
$replacer = new myclass();
$reste=$_POST["mttext"];
echo $replacer->replace_str($reste);

سلام

پس این چیه؟:متفکر::متفکر:


سلام بامنی الان؟

meysam1366
یک شنبه 16 فروردین 1394, 20:56 عصر
سلام بامنی الان؟

سلام

نه با آقا رضا بودم

شما یک نمونه از شی گرفته بودید اما آقا رضا به شما فرموده بودن که یک نمونه از شی ایجاد کنید مثل اینکه ندیده بودن کدهای شما رو

mehdi mah
دوشنبه 17 فروردین 1394, 21:28 عصر
کد شما واسه من کار میکنه
فکر میکنم اگر اشتباه نکرده باشم ایراد از کد php تون نیست ایراداز کد html هستش دقیق تر نگاه کنید شاید نسخه xammp یا wammp شما نیاز داره که ادرس دقیق به فرم داده بشه
البته من یه اشتباهی تایپی داشتی اون رو رفع کردم

phpphp7
دوشنبه 17 فروردین 1394, 21:29 عصر
یکی از مشکلات برنامه نویسی فراموشی syntaxو سلسله مراتب توابع زبان برنامه نویسی می باشد.
شعار برنامه نویسی شی گرا "دنیا را آنچنان که هست برنامه نویسی کنیم" می باشد.
و phpبه مانند سایر زبان های برنامه نویسی سعی در مدل کردن برنامه ها،مطابق دنیای پیرامون می باشد که مدل کردن دنیای پیرامون در ساختار کامپیوتر را شی گرایی می گویند.
مفهوم شی:
مهمترین مولفه در برنامه نویسی شی گرا می باشد شی در برگیرنده ویژگی ها و رفتار های یک موجودیت می باشد.به عنوان مثال در یک buttonمی تواند یک شی باشد ای نشی هم ویژگی هایی دارد و هم رفتار.
اعضای یک شی:
شی از ترکیب ویژگی ها و رفتار ها (توابع) ایجاد شده است .تابع عضو یک شی را متد می گویند.که متغیر ها و متد ها را می توان در سه حوزه (seope)تعریف کرد.و حوزه دسترسی مشخص می کندکه اشیا دیگر می توانند به آن متغیر ها دسترسی داشته باشند یا نه؟ که در ادامه به بررسی این سه حوزه می پردازیم.
نحوه تعریف کلاس:



Class my_class
//my_class:نام کلاس
{
//محل تعریف متغیر ها و متدها
}



مثال عملی:
می خواهیم دراین بخش یک کلاسی تعریف کنیم که شامل یک سری متد ها و متغیر ها می باشد.
کاربر یک رشته ای را وارد می کند اگر داخل رشته علامت* بود به && تبدیل کند:
کد php:


/**
*in the name of allah
*author:reza_alie
*/

class myclass
{

function replace_str($str_input)
{
return str_replace('*', '&&', $str_input);//سه پارامتر می گیرد که اولی مقداری که می خواهیم به دنبال آن بگردیم و پارامتر دوم مقدار جایگزینی است و پارامتر سوم رشته ورودی می باشد str_replaceهمانطور که می دانید تابع
}
}
$myclass=new myclass();// برای درست کردن یک شی از یک کلاس از کلمه کلیدی new استفاده میکنیم

echo $myclass->replace_str("this *is *test");//برای دسترسی به متد های یک کلاس از علامت->استفاده می کنیم

/**
*
*output : this &&is &&test
*/


سلام
من این دو خط زیر رو متوجه نمیشم !!


$myclass=new myclass();// برای درست کردن یک شی از یک کلاس از کلمه کلیدی new استفاده میکنیم

echo $myclass->replace_str("this *is *test")


کد $this-> برای چی استفاده میشود؟

خب این کلاس که شبیه همون تابع هست ! پس چرا از همون تابع استفاده نکنیم ؟

mehdi mah
دوشنبه 17 فروردین 1394, 21:34 عصر
از this برای دسترسی به متغیر های درون کلاس استفاده میشه

reza_alie
دوشنبه 17 فروردین 1394, 21:41 عصر
سلام



سلام
من این دو خط زیر رو متوجه نمیشم !!

$myclass=new myclass();// برای درست کردن یک شی از یک کلاس از کلمه کلیدی new استفاده میکنیم




echo $myclass->replace_str("this *is *test")

دوست عزیز سلام
کلمه newبرای نمونه سازی از کلاس هست
و همانطور که دوست گرامی
mehdi mah (http://barnamenevis.org/member.php?331496-mehdi-mah) فرمودنداز this برای دسترسی به متغیر های و متدهای درون کلاس استفاده میشه

mehdi mah
دوشنبه 17 فروردین 1394, 22:05 عصر
$replacer = new myclass();
$reste=$_POST["mttext"];
echo $replacer->replace_str($reste);

سلام

پس این چیه؟:متفکر::متفکر:

سلام دوست گرامی وقتی میگیم این کد کار نمیکنه ممکنه منظورهای متفاوتی داشته باشیم اینکه صفحه سفید نشون میده این که یه ارور وارنینگ میده یا اینکه ارور نوتیک میده یا اینکه نتیجه بر نمیگردونه و هزاران حالت مختلف کد بالا برای من درس کار کرد ولی با این تفاوت که من بجای کپی پست کردن کدها بر اساس یه عادت خودم تایپ میکنم
سوال دوستمون اشتباه بود باید میگفتند خروجی مناسب برنمیگردونه من بعد از دقت متوجه شدم اشتباه تایپی داشتند در قسمت
$reste=$_POST["mttext"];
و بجای my txt نوشتن mt txt

و مسیله بعدی لحن صحبت شما به نظر بنده مناسب نبود امیدوارم من اشتباه کرده باشم

phpphp7
سه شنبه 18 فروردین 1394, 10:06 صبح
مثال دوم برای درک بهتر:



class myclass
{
var $text="this is test";
/**
برای تعریف متغیری به نام
$text
از کلمه کلیدی
var
استفاده می کنیم .

*/
function do_print()
{
echo $this->text;
/**
برای فراخوانی متد ها یا متغیر های شی بایستی از کلمه کلید
$this->
استفاده کنیم
*/
}
}
$myclass=new myclass();
//$myclass->text="im reza alie";
//برای ریختن مقدار جدید در متغیر می توانیم از کد فوق استفده کنیم
$myclass->do_print();


کد اول و کد دوم برای چی هستند ؟ چرا مکمل هم هستند؟




$myclass=new myclass();

$myclass->do_print();

reza_alie
سه شنبه 18 فروردین 1394, 11:37 صبح
کد اول و کد دوم برای چی هستند ؟ چرا مکمل هم هستند؟




$myclass=new myclass();

$myclass->do_print();

سلام
کد اول برای ایجاد شی جدید هست و در خط دوم با استفاده از ->به متد do_printدسترسی پیدا کردیم

MMSHFE
سه شنبه 18 فروردین 1394, 11:48 صبح
سلام
من این دو خط زیر رو متوجه نمیشم !!


کد $this-> برای چی استفاده میشود؟

خب این کلاس که شبیه همون تابع هست ! پس چرا از همون تابع استفاده نکنیم ؟

این لینک رو بخونید: http://www.ncis.ir/articles/28/%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20PHP%20-%20%D8%AC%D9%84%D8%B3%D9%87%20%D8%AF%D9%87%D9%85

بهتر بود استارتر عزیز قبل از شروع آموزش شئ گرایی، اول میگفتن چرا باید شئ گرایی رو یاد گرفت و امتیازهاش نسبت به برنامه نویسی رویه گرا چیه. تا وقتی نفهمیم ابزارها برای چه کاری خوب هستن، انگیزه ای برای یادگیریشون نداریم. بیان یکسری توضیحات کلی و خلاصه درمورد مسائل اونهم از منبعی مثل ویکیپدیا که بعنوان یک منبع علمی موثق مورد قبول نیست (بدلیل امکان ویرایش توسط هر کسی) و شیوه نگارش قابل فهم و درکی برای تازه کارها هم نداره، مناسب نیست.

Mohammadsgh
چهارشنبه 19 فروردین 1394, 13:31 عصر
کد اول و کد دوم برای چی هستند ؟ چرا مکمل هم هستند؟




$myclass=new myclass();

$myclass->do_print();

ببینید اگر بخوام ساده بگم.ایشون اومدن یک کلاس با نام myclass ایجاد کردن.برای اینکه بتونیم از اون کلاس استفاده کنیم باید ازش یک شی بسازیم که ایشون روش ساخت شی رو گفتن که با واژه کلیدی new این کار انجام میشه.هر گونه پرسش و ابهامی داشتید بپرسید

arash691
چهارشنبه 19 فروردین 1394, 13:33 عصر
مفاهیم شئ گرایی از روش استفاده اونا مهم تره بهتره چند جلسه ی اول رو به تشریح مفاهیم شئ گرایی بپردازید تا ذهن خواننده درک بهتری از مطالبتون داشته باشه ...

behzadamin12
یک شنبه 25 اسفند 1398, 09:40 صبح
خوب و عالی
لطفا نظرت رو درمورد این آموزش هم بده
https://jobteam.ir/ProductUser/138-php-oop