PDA

View Full Version : سوال: فرق متد و فیلد static با متد عادی



sepide72
چهارشنبه 27 آبان 1394, 11:07 صبح
اینو میدونم که اگه متد استاتیک باشه نیاز به ساخت شی نیست وحافظه نمیگیره و ....
چرا باید بعضی جاها از متد و فیلد های استاتیک استفاده کنیم؟و بعضی جاها شی بسازیم؟ فرق این دو تا تو چیه؟

jionelmessi
چهارشنبه 27 آبان 1394, 12:42 عصر
با سلام
ببینید اگر مدتون از اون کلاس درپروژتون جاهای زیادی استفاده میشه استاتیک کنید تا از نوشن کد زیاد راحت شین مثل متد های ذخیره سازی رکورد تو دیتابیس و ...
ولی اگر از یک کلاس با مقادیر مختلف می خواهید استفاده کنید بهتره متدا غیر استاتیک باشن یعنی به صورت نرمال
چون هر شی فضای خودشو داره و ایزولس فیلد های آن .

اینم بخون
http://verraes.net/2014/06/when-to-use-static-methods-in-php/

sepide72
چهارشنبه 27 آبان 1394, 15:02 عصر
ببخشید متد های دستیاب چی؟__set و __get کجا به درد میخورن؟چون احساس میکنم کم کاربردن.میشه یک نمونه ازشون بنویسید؟ممنون میشم

jionelmessi
چهارشنبه 27 آبان 1394, 16:07 عصر
سعی کنید تو سایت های انگلیسی یا همون php.net بچرخید تا اصل قضیه دستتون بیاد
اینا بهشون مگن متدای جادویی کاربرد دارند وقتی شما یه فیلد تعریف می کنید تو یه کلاس به صورت public شما می تونید هر مقداری پس از ساختن شی در آن بریزید بدوون اینکه اعتبار سنجی کنید مثلا سن یه شخصیو تو کلاس person می خواهید set کنید سشما می تونید همینجوری مقدار منفیم بدید و لی میتونید دوتا متد set get براش بنویسید تا قبل از set کردن اعتبار سنجی کنه مثال :


public function getAge(){


return $this->age;
}

public function setAget($value){

if($value >=1)
$this->age= $value;
}



حالا شما ف کنید از این مدل متدا زیاد باشه باس برای همش.ن هی get set بنویسید بجاش میایم از متدای جادویی استفاده می کنیم.



class MyClass {
private $firstField;
private $secondField;

public function __get($property) {
if (property_exists($this, $property)) {
return $this->$property;
}
}

public function __set($property, $value) {
if (property_exists($this, $property)) {
$this->$property = $value;
}
}
}

$myClass = new MyClass();

$myClass->firstField = "This is a foo line";
$myClass->secondField = "This is a bar line";

echo $myClass->firstField;
echo $myClass->secondField;

/* Output:
This is a foo line
This is a bar line
*/




اینم ببین
http://stackoverflow.com/questions/6184337/best-practice-php-magic-methods-set-and-get

اگر میخوای برنامه نویس خوب شی حرف ای یاد بگیری داکیومنترو بخون و زود تمرین کن اینجور یادت می مونه کی کجا کاربرد داره
http://php.net/manual/en/language.oop5.magic.php