PDA

View Full Version : __construct() چیه و چه کارایی رو داره؟



NASA_DE
یک شنبه 11 بهمن 1394, 11:52 صبح
__construct() چیه و چه کارایی رو داره؟

i love you php
یک شنبه 11 بهمن 1394, 14:38 عصر
class mycalss{

function __construct(){
//------------
}
}


هنگام فراخوانی کلاس این اجرا میشود ؛ بدون فراخوانی تابع (متد) در کلاس .

Farshid007
یک شنبه 11 بهمن 1394, 18:32 عصر
البته ی کارایی دیگه هم داره
پارامتر های این تابع همون پرامتر هایی میشه که به هنگام ایجاد کلاس نیاز میشه:لبخندساده:

NASA_DE
یک شنبه 11 بهمن 1394, 22:25 عصر
مزیت و معایب نسبی استفاده از این متد در کلاس چیه؟

Farshid007
یک شنبه 11 بهمن 1394, 23:18 عصر
خیلی به درد میخوره اگه تاحالا چند تا کلاس نوشته باشی متوجه میشی که بدون این کارت لنگه:لبخندساده:

NASA_DE
یک شنبه 11 بهمن 1394, 23:21 عصر
خیلی به درد میخوره اگه تاحالا چند تا کلاس نوشته باشی متوجه میشی که بدون این کارت لنگه:لبخندساده:

خوب میشه بیشتر توضیح بدید؟

Farshid007
یک شنبه 11 بهمن 1394, 23:36 عصر
براتون ی مثال ساده میزنم:

class kala
{
//kala property
var $code;
var $name;
//Create Kala with Codekala and kala name
function __construct($codeKala,$name)
{
//set kala property
$this->code=$codeKala;
$this->name=$name;
}
function WriteKalaProperty()
{

echo 'Kala Code:'.$this->code.'<br>'.'Kala name:'.$this->name;
}

}

همونطور که خودتون میدونید این یک کلاس به اسم kala میباشد دوتا var داره به اسم code و name که به هنگام ایجاد یک نمونه از این کلاس اینو دو مشخصه باید مقدار دهی بشن تا بتونیم عملیات های لازمه رو رو این kalaانجام بدیم
مثل تابع WriteKalaPropety

بعد میخوام ی جایی یک نمونه از این کلاس رو بسازم:

$kala=new kala(5,"LED TV");
$kala->WriteKalaProperty();
همونطور که حدس زدید به هنگام ایجاد یک نمونه از کلاس kala باید دو مقدار را بهش بدیم که من اینجا مقدار 5 را برای code و مقدار LED TV رو برای name دادم
بعد تابع writeKalaPropety رو فرا خوانی کردم

Farshid007
یک شنبه 11 بهمن 1394, 23:38 عصر
امیدوارم منظورمو متوجه شده باشید
اطلاعات بیشتر و دقیق تر در:
http://www.w3schools.com/php/func_simplexml__construct.asp

NASA_DE
یک شنبه 11 بهمن 1394, 23:40 عصر
براتون ی مثال ساده میزنم:

class kala
{
//kala property
var $code;
var $name;
//Create Kala with Codekala and kala name
function __construct($codeKala,$name)
{
//set kala property
$this->code=$codeKala;
$this->name=$name;
}
function WriteKalaProperty()
{

echo 'Kala Code:'.$this->code.'<br>'.'Kala name:'.$this->name;
}

}

همونطور که خودتون میدونید این یک کلاس به اسم kala میباشد دوتا var داره به اسم code و name که به هنگام ایجاد یک نمونه از این کلاس اینو دو مشخصه باید مقدار دهی بشن تا بتونیم عملیات های لازمه رو رو این kalaانجام بدیم
مثل تابع WriteKalaPropety

بعد میخوام ی جایی یک نمونه از این کلاس رو بسازم:

$kala=new kala(5,"LED TV");
$kala->WriteKalaProperty();
همونطور که حدس زدید به هنگام ایجاد یک نمونه از کلاس kala باید دو مقدار را بهش بدیم که من اینجا مقدار 5 را برای code و مقدار LED TV رو برای name دادم
بعد تابع writeKalaPropety رو فرا خانی کردم

پس در واقع کدمون رو کوتاه تر نوشتیم، درسته؟

Farshid007
یک شنبه 11 بهمن 1394, 23:44 عصر
پس در واقع کدمون رو کوتاه تر نوشتیم، درسته؟
متوجه نمیشم؟
چه کوتاهی ؟
مگه بلند این کد چطوری مشید؟:متفکر:

NASA_DE
یک شنبه 11 بهمن 1394, 23:50 عصر
اگر __construct نمی نوشتیم باید موقعی که میخواستیم نمونه از کلاس رو بسازیم باید یک خط هم مقدار دهی می کردیم، درسته؟ که با این روش یک خط رو ننوشتیم.
منظور از __construct رو کامل متوجه شدم، فقط نمیدونم چه مزیتی داره، مثلا سریعتر اجرا میشه؟ رم رو کمتر اشغال میکنه و .... ؟

Farshid007
دوشنبه 12 بهمن 1394, 00:03 صبح
بله درسته
البته فقط مقدار دهی متغیر ها نیست که
خیلی کارا هایی لازم میشه (مثل وصل شدن به دیتابیس )که هنگام ایجاد یک کلاس باید انجام بشه اینجا من مثال ساده زدم
خب ی مزیتش میتونه اسان تر کردن کد نویسی باشه
بعید میدونم ربطی به رمو سرعتو اینجور چیزا داشته باشه
فکر کن این نبود میخواستی ی کلاس بنویسی که به چند parametr اولیه نیاز داره چطوی میخواستی بنویسی؟

hamedarian2009
دوشنبه 12 بهمن 1394, 10:17 صبح
ببینید شما وقتی می خواهید با یک کلاس کار کنید یکسری مقداردهی های اولیه رو ممکنه نیاز داشته باشید مثلا شما وقتی می خواهید با سشن کار کنید باید سشن رو همیشه استارت کنید یا وقتی با دیتابیس کار کنید باید هربار به دیتابیس متصل بشید و همچنین میتونید پارامترهایی نیز با این تابع ارسال کنید تا یکسری متغیرهای تو کلاس مقداردهی بشند

حالا شما فرض کنید از این تابع استفاده نمیکردین مثلا تو کلاس سشن ها باید هربار تو هر متد سشن رو استارت بکنید خب این میشه تکرار و حالا فرض کنید دوتا متد سشن رو باهم بخواهید تو یک ضفحه استفاده کنید اونوقت چون تو هردو سشن استارت شده خطا میده هرچند این هم راه داره اما در کل مثالی بود برای اینکه بهتر متوجه بشید

NASA_DE
جمعه 23 بهمن 1394, 12:21 عصر
فرق بین concrete methods و abstract methods چیست