سؤال

اريد تحديد وظيفة doSomething(arg1, arg2) مع القيم الافتراضية إلى Arg1 = Val و Arg2 = Val

عندما اكتب

function doSomething($arg1="value1", $arg2="value2"){
 // do something
}

هل من الممكن الآن استدعاء Dosomething مع Arg1 و Arg2 = "New_Value2"

هل كانت مفيدة؟

المحلول

كلا ، للأسف ، هذا غير ممكن. إذا حددت $arg2, ، سوف تحتاج إلى تحديد $arg1 كذلك.

نصائح أخرى

في بعض الأحيان ، إذا كان لدي الكثير من المعلمات مع الإعدادات الافتراضية ، فسوف أستخدم صفيفًا لاحتواء الوسائط ودمجها مع الافتراضات.

public function doSomething($requiredArg, $optional = array())
{
   $defaults = array(
      'arg1' => 'default',
      'arg2' -> 'default'
   );

   $options = array_merge($defaults, $optional);
}

حقا فقط من المنطقي إذا كان لديك الكثير من الحجج رغم ذلك.

function doSomething( $arg1, $arg2 ) {
  if( $arg1 === NULL ) $arg1 = "value1";
  if( $arg2 === NULL ) $arg2 = "value2";
  ...
}

والاتصال:

doSomething();
doSomething(NULL, "notDefault");

هل سبق لك تعيين Arg1 ولكن ليس Arg2؟ إذا لم يكن الأمر كذلك ، فسوف أقوم بتبديل الطلب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top