Использование аргументов по умолчанию в функции - PullRequest
157 голосов
/ 07 февраля 2012

Меня смущают значения по умолчанию для функций PHP. Скажем, у меня есть такая функция:

function foo($blah, $x = "some value", $y = "some other value") {
    // code here!
}

Что, если я хочу использовать аргумент по умолчанию для $ x и установить другой аргумент для $ y?

Я экспериментировал с разными способами, и я просто запутался. Например, я попробовал эти два:

foo("blah", null, "test");
foo("blah", "", "test");

Но оба из них не приводят к правильному аргументу по умолчанию для $ x. Я также пытался установить его по имени переменной.

foo("blah", $x, $y = "test");   

Я полностью ожидал, что что-то подобное сработает. Но это не работает, как я ожидал. Кажется, что независимо от того, что я делаю, мне все равно придется заканчивать вводом аргументов по умолчанию, каждый раз, когда я вызываю функцию. И я, должно быть, упускаю что-то очевидное.

Ответы [ 11 ]

0 голосов
/ 07 февраля 2012

Это тот случай, когда объект лучше - потому что вы можете настроить свой объект так, чтобы он содержал x и y, установить значения по умолчанию и т. Д.

Подход с массивом близок к созданию объекта (На самом деле, объекткуча параметров и функций, которые будут работать над объектом, а функция, принимающая массив, будет работать над некоторыми кучами ов-параметров)

Конечно, вы всегда можете сделать несколько трюков, чтобы установить ноль или что-то вроде этого по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...