Передача нескольких параметров в метод в PHP - PullRequest
2 голосов
/ 02 октября 2010

Я сейчас работаю над простым классом, чтобы разобраться с ООП, и мне нужна помощь с функцией Функция получает различные параметры, некоторые из которых являются необязательными:

public function Test($req, $alsoreq, $notreq = null, $notreq2 = null, $notreq3 = null)
{ 
    ...
}

Как мне вызвать функцию, передав два первых параметра и последний?

Например:

Test('req', 'alsoreq', 'notreq3'); 

Игнорировать notreq2 и notreq?

Я пытался

Test('req', 'alsoreq', '', '', 'notreq3');

но это кажется уродливым и хакерским.

Ответы [ 3 ]

9 голосов
/ 02 октября 2010

Вы не можете.Подумайте об этом, если бы вы могли это сделать, как PHP мог бы определить, должен ли третий аргумент быть $notreq, $notreq2 или $notreq3?Менее хакерский способ будет выглядеть следующим образом:

Test($req, $alsoreq, NULL, NULL, $notreq3);

Поскольку вы ясно даете понять, что первые два необязательных аргумента NULL.

Выберите порядки аргументов с умом, поэтому те, которыепривыкнуть чаще приходить первым.
В качестве альтернативы вы можете использовать массив:

public function Test($req, $alsoreq, array $notreq) { ... }

// no optional args
Test($req, $alsoreq);

$optional = array('arg1' => 'something', 'arg2' => 'something else');
Test($req, $alsoreq, $optional);

$optional = array('arg3' => 'hello');
Test($req, $alsoreq, $optional);
1 голос
/ 02 октября 2010

Кажется, нет пути.Как написано в php manual :

Обратите внимание, что при использовании аргументов по умолчанию любые значения по умолчанию должны быть справа от любых аргументов не по умолчанию;в противном случае все будет работать не так, как ожидалось.

Вы пытаетесь поместить значение не по умолчанию (notreq3) справа от значения по умолчанию (notreq2, notreq1).Гадкий и хакерский путь, скорее всего, будет более правильным.

С уважением, Серж

0 голосов
/ 28 декабря 2015
  1. Напишите функцию с именем aboutMe.
  2. Требуется два параметра $name и $age.
  3. Стоит echo out "Hello! My name is $name, and I am $age years old.".
  4. Вызовите свою функцию и проверьте панель результатов, чтобы увидеть, работает ли она!

Подсказка

"Hello! My name is " . $name . " and I am " . $age . " years old."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...