PDA

View Full Version : سوال: انواع متدها در php



ravand
پنج شنبه 01 اسفند 1392, 13:34 عصر
سلام
انواع متدها در php چه متدهایی هستند؟ من فقط متدهای جادویی رو میشناسم. ممنون میشم چند موردش رو برام بگید. این گوگل درست و حسابی جستجو نمیکنه!
متشکرم.

MRmoon
جمعه 02 اسفند 1392, 08:14 صبح
آقای ravand (http://barnamenevis.org/member.php?147061-ravand) منظور شما از انواع متد چیه؟؟؟؟ مثلا یه سری متد ها هستند نوعشون abstract هست و منظورتون ایناست؟؟؟

H:Shojaei
جمعه 02 اسفند 1392, 23:02 عصر
سلام
ببينيد اصلا نميشه گفت متدهاي جادويي يا متدهاي غير جادويي اصلا متدها به دسته هايي تقسيم نشدن جادويي يه پيشونده كه به متدهاي از پيش تعيين شده تو زبان php دادن و شده magic method كه اين پيشوند نشون دهنده دسته متدها نيست...
در حقيقت اين متدهاي جادويي واسه خلاقيت و راحتي كار واسه برنامه نويس ساخته شدن كه كاراي مختلفي تو جاهاي مختلفي دارن.
magic-methods-in-php (http://www.lornajane.net/posts/2012/9-magic-methods-in-php)
php.net-magic.php (http://www.php.net/manual/en/language.oop5.magic.php)
متدهای-جادویی-در-php (http://phpro.ir/%D9%85%D8%AA%D8%AF%D9%87%D8%A7%DB%8C-%D8%AC%D8%A7%D8%AF%D9%88%DB%8C%DB%8C-%D8%AF%D8%B1-php/)

ravand
شنبه 03 اسفند 1392, 07:47 صبح
آقای ravand منظور شما از انواع متد چیه؟؟؟؟ مثلا یه سری متد ها هستند نوعشون abstract هست و منظورتون ایناست؟؟؟
منظورم رو خیلی واضح گفتم. غیر از متدهای جادویی چه متدهایی وجود داره؟


سلام
ببينيد اصلا نميشه گفت متدهاي جادويي يا متدهاي غير جادويي اصلا متدها به دسته هايي تقسيم نشدن جادويي يه پيشونده كه به متدهاي از پيش تعيين شده تو زبان php دادن و شده magic method كه اين پيشوند نشون دهنده دسته متدها نيست...
در حقيقت اين متدهاي جادويي واسه خلاقيت و راحتي كار واسه برنامه نويس ساخته شدن كه كاراي مختلفي تو جاهاي مختلفي دارن.
magic-methods-in-php
php.net-magic.php
متدهای-جادویی-در-php
با توجه به صحبت های شما من نتیجه گرفتم که به غیر از متدهای جادویی دیگه متدی نیست و اسم کلاً متد توی شی گرایی php متدهای جادویی هست درسته؟

rezaonline.net
شنبه 03 اسفند 1392, 14:21 عصر
دیگه اینا لازم بوده که باشه .
حالا توسط اینا خودتون میتونید یه معماری ایجاد کنید و ...

MMSHFE
شنبه 03 اسفند 1392, 15:02 عصر
با توجه به صحبت های شما من نتیجه گرفتم که به غیر از متدهای جادویی دیگه متدی نیست و اسم کلاً متد توی شی گرایی php متدهای جادویی هست درسته؟
کاملاً اشتباهه. کلاً اسم متد توی شئ گرایی PHP متد جادویی نیست! متدها به چند دسته تقسیم میشن:

1- متدهای جادویی که با __ (دو بار Underscore) شروع میشن: این متدها برحسب موقعیت استفاده، میتونن جایگزین اسامی مختلفی بشن. مثلاً construct__ که در هر کلاس، به جای اسم اون کلاس به کار برده میشه یا get__ و set__ که برحسب Property بکاررفته روی شئ، اسم همون Property رو به خودشون میگیرن.

2- متدهای معمولی که با کمک اشیاء ایجادشده از روی کلاس فراخوانی میشن و توانایی دسترسی به Propertyهای شئ ازطریق متغیر ویژه this$ رو دارن و ازطریق عملگر <- قابل دستیابی هستن.

3- متدهای ایستا (static) که با کمک نام کلاس قابل فراخوانی هستن و برای استفاده از اونها نیازی به ایجاد شئ از کلاس نیست و توانایی دسترسی به Propertyهای شئ رو ندارن و ازطریق عملگر :: قابل دسترسی هستن.

4- متدهای خلاصه (abstract) که درواقع فقط ساختار متد رو در کلاسی که اونهم خلاصه است (abstract) مشخص میکنن و دارای بدنه متد نیستن و تمام فرزندان این کلاس، باید متدهای abstract رو با ساختاری که مشخص شده (پارامترها و اسم و...) بازنویسی (Override) کنن و البته بدنه داخل متد رو به دلخواه خودشون پیاده سازی کنن.

5- متدهای نهایی (final) که درحقیقت آخرین نسخه از یک متد هستن (در کلاسهای مشتق شده از کلاس جاری نمیشه اونها رو بازنویسی کرد). البته اگه خود کلاس final باشه، دیگه حتی نمیشه از کلاس، فرزند مشتق کرد.
-----
فعلاً همینها یادم بود. اگه بازهم موردی یادم اومد، اضافه میکنم.

ravand
شنبه 03 اسفند 1392, 15:09 عصر
2- متدهای معمولی که با کمک اشیاء ایجادشده از روی کلاس فراخوانی میشن و توانایی دسترسی به Propertyهای شئ ازطریق متغیر ویژه this$ رو دارن و ازطریق عملگر <- قابل دستیابی هستن.
متشکرم مهندس.
با این حساب می توانیم بگیم هر تابعی در شی گرایی متد هست؟
مثلاً

<?php
class class1{
Var $a=10;
Function set()
{
echo $this->a."<br/>";
}
Function display()
{
echo $this->a-100;
}
}
$t=new class1();
$t->set();
$t->display();
?>

الان set() و display() متد هست؟ اونم از نوع معمولی؟

MMSHFE
شنبه 03 اسفند 1392, 15:13 عصر
بطور کلی هر تابعی که توی کلاس تعریف میشه، بهش میگیم متد. بله این دو مورد، متدهای معمولی هستن با سطح دسترسی public.