параметры по умолчанию

Иван

Guest
параметры по умолчанию

есть функция

PHP:
function do_something($a="param_1", $b="param_2") {
  ... do something ...
}
есть ли возможность вызвать ее передав параметр $b,
при этом параметр $a оставив по умочанию?

ЗЫ. Просьба не предлагать поменять параметры местами - проблема остается и в таком случае.
 

Vladson

Сильнобухер
Re: параметры по умолчанию

Если гора не идёт к Магомеду....

PHP:
<?php
function do_something($a=false, $b=false) {
   if (!$a) {
      $a="param_1";
   }
   if (!$b) {
      $b="param_2";
   }
   return "fuck";
}

echo do_something();
echo do_something(123);
echo do_something(false, 456);
echo do_something(123, 456);

?>
 

Лисю

Guest
Vladson это не имеет к вопросу никакого отношения.
Концептуально твой false уже есть изменение параметра функции.
Иван наверно хотел что то типа do_something( , "param_2"); как в list(), но увы..
 

Vladson

Сильнобухер
Лисю
Это имеет отношение т.к это один из компромисов...
 

Лисю

Guest
Это не компросмис, а кулхацкерство непродуманное.
Если мне функцию понадобиться изменить и передавать в неё false?
 

Profic

just Profic (PHP5 BetaTeam)
PHP:
<?php
class DoSomethingParams {
  public $param1 = 'param_1';
  public $param2 = 'param_2';
  public setParam1($param) { $this->param1 = $param; return $this; }
  public setParam2($param) { $this->param2 = $param; return $this; }
}

function doSomething(DoSomethingParams $params) {
  // do something
}

$params = new DoSomethingParams();
doSomething($params->setParam2('cool value'));
?>
:D
 

Иван

Guest
Спасибо всем. Вопрос снимается.

-~{}~ 25.07.05 16:12:

Автор оригинала: Profic
PHP:
<?php
class DoSomethingParams {
  public $param1 = 'param_1';
  public $param2 = 'param_2';
  public setParam1($param) { $this->param1 = $param; return $this; }
  public setParam2($param) { $this->param2 = $param; return $this; }
}

function doSomething(DoSomethingParams $params) {
  // do something
}

$params = new DoSomethingParams();
doSomething($params->setParam2('cool value'));
?>
:))) Гы. Занятно... Жизненно.
 

Фанат

oncle terrible
Команда форума
Иван
а как ты представляешь себе ход мысли интерпретатора?
каким образом он должен понять, какой параметр ты ему передаёшь?
какой параметр ты имел в виду, когда вызывал функцию с одним параметром?
 

Иван

Guest
Автор оригинала: Фанат
Иван
а как ты представляешь себе ход мысли интерпретатора?
каким образом он должен понять, какой параметр ты ему передаёшь?
какой параметр ты имел в виду, когда вызывал функцию с одним параметром?
Не стебитесь :)

Конечно же я имел в виду конcтрукцию типа
(,,,paramM,,,paramN)

Спросил потому, что думал есть какая-то конструкция.

А выкрутился пока передачей пустых значений:
do_something("","param_2")
 

demongloom

Новичок
Увы конструкций нету...
Такова особенность языка.

ИМХО, вместо false лучше использовать null, он более подходит под это дело.

Также можно стандартные значения, можно записать в константу.
 

demongloom

Новичок
И каким образом ты ее перегрузишь? А главное что даст перегрузка?
 
Сверху