PDA

View Full Version : سوال: درخواست راهنمایی برای تعریف آرگومان های متغییر در تابع؟؟؟



reza-alborz
یک شنبه 08 اردیبهشت 1392, 08:55 صبح
با عرض سلام

دوستان میشه کاری کرد که تابع به تعدادی که میخواهیم آرگومان بگیره؟

مثلا یک بار 2تا و بار دیگر 3 تا و ...

SlowCode
یک شنبه 08 اردیبهشت 1392, 09:25 صبح
سلام
شما حداکثر پارامتر هات رو مشخص کن مثلا تابع شما 10 تا داره.حالا میخوای دوتاش رو مقدار دهی کنی؟ کافیه به پارامترها مقدار اولیه بدی.

function save($param1,$param2="value",$param3="value",$param4="value",$param4="value")
اینجا 4 تا پارامتر داریم که فقط مقدار دهی پارامتر اول اجباری هست، بقیه اختیاریه.

reza-alborz
یک شنبه 08 اردیبهشت 1392, 09:31 صبح
تشکر
ببین دوست عزیز
من میخوام یک تابع داینامیک باشه
مثلا هنگام فراخوانی تابع خودم تعیین کنم که چند تا ورودی داشته باشه و ورودی بدم
چون میخوام تابع هرچی آرگومان داره رو روش عملیات انجام بده

این چیزی که شما میگین باز هم ثابت میشه

بهزاد علی محمدزاده
یک شنبه 08 اردیبهشت 1392, 10:22 صبح
این صفحه رو یه نگاه بنداز . لینک (http://php.net/manual/en/function.func-get-args.php)

plague
یک شنبه 08 اردیبهشت 1392, 17:53 عصر
از آرایه هم میتونی استفاده کنی

مثلا تابعت 2 تا آرگومان بگیره
یکیشون یه آرایست که شامل آرگومان هاسست
دومیش هم یه متغیره که مشخص میکنه که تابع چند تا آرگومان داره

Unique
دوشنبه 09 اردیبهشت 1392, 02:22 صبح
البته نیاز به آرگمان دوم نیست و با count تعداد عناصر آرایه بدست میاد.

plague
دوشنبه 09 اردیبهشت 1392, 09:39 صبح
نه منظورم از آرگومان دوم این بود که شاید بخاد تعداد عناصر آرایه رو کنترل کنه در هر فراخانی تابع که مثلا بیش از مقدار مشخصی نباشن

webeloper
دوشنبه 09 اردیبهشت 1392, 11:08 صبح
سلام، تو php ما function overloading نداریم، اما می تونی از call__ استفاه کنی
به این کد نگاه کنید مطلب نیاز به توضیح نداره:

class phpOverloading {
public function __call($name, $args) {

switch ($name) {
case 'funcOne':
switch (count($args)) {
case 1:
return call_user_func_array(array($this, 'funcOneWithOneArg'), $args);
case 3:
return call_user_func_array(array($this, 'funcOneWithThreeArgs'), $args);
}
case 'anotherFunc':
switch (count($args)) {
case 0:
return $this->anotherFuncWithNoArgs();
case 5:
return call_user_func_array(array($this, 'anotherFuncWithMoreArgs'), $args);
}
}
}

protected function funcOneWithOneArg($a) {

}

protected function funcOneWithThreeArgs($a, $b, $c) {

}

protected function anotherFuncWithNoArgs() {

}

protected function anotherFuncWithMoreArgs($a, $b, $c, $d, $e) {

}

}