Сколько параметров можно передать пользовательской функции?

Я относительно новичок в программировании, много работал с javascript и теперь пытаюсь изучить php. Название в основном говорит об этом. Сколько параметров я могу передать пользовательской функции?

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

Например:

Вызовите функцию:

Myfunction(1,4,3,2,6)

Вызываемая функция:

function Myfunction(numOfApples, numOfBananas, numOfPears, numOfOranges, numOfRasberries){'do something with each of these values'}

Я прошу общего понимания, я не пытаюсь сделать что-то конкретное, поэтому список фруктов — это просто пример передачи параметров, которые представляют разные вещи.


person Eric    schedule 16.08.2013    source источник


Ответы (2)


Я не верю, что существует ограничение на количество параметров, которые вы можете отправить в функцию. Однако, на мой взгляд, как только вы преодолеете 3 или 4, я склонен двигаться к отправке массива или объекта следующим образом:

$send_values = array(
    'value1' = 1,
    'value2' = 3,
    'value3' = 2,
    'value4' = 5,
    'value5' = 1,
);

function Myfunction($input) {

}

Таким образом, вам не нужно беспокоиться о точном порядке, в котором вы отправляете переменные. Кроме того, отправка нулевых значений намного проще. Вы можете просто использовать isset($input['value2']), чтобы увидеть, было ли отправлено значение. Но если каждая из них была установлена ​​​​как независимая переменная, у вас есть эта проблема:

function Myfunction(value1,value2,value3=null,value4=null,value5=null) {

}

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

Myfunction(1,2);

Однако, скажем, вам нужно отправить значение1, значение2 и значение5, теперь вам нужно убедиться, что вы отправляете нулевые значения для значения3 и значения4, чтобы значение5 заполнялось данными, а не значением3:

Myfunction(1,2,null,null,5);

На мой взгляд, это может просто превратиться в кластер и может запутаться. Это все личные предпочтения, на этот вопрос есть несколько хороших ответов: Как слишком много параметров?

person Pitchinnate    schedule 16.08.2013
comment
один парень сказал мне, что передавать как массивы плохо, потому что вам все время нужно проверять, установлен ли параметр. А вот с объектом опять же, может та же проблема, не пробовал передавать объекты как параметры, только для данных. Но когда у меня есть функции с более чем 15 параметрами и я использую стиль кода PSR-2, функции становятся очень длинными, потому что каждый параметр находится в новой строке. - person Dariux; 09.03.2015

На самом деле нет предела. Но если количество параметров начинает накапливаться, вам следует подумать о создании объекта для их хранения (при условии, что они связаны, как в вашем примере), и передать объект в качестве параметра.

Передача объекта или массива, если на то пошло, упрощает внесение изменений в ваш код в более поздний момент времени (вместо того, чтобы обновлять поле параметра каждый раз, когда вы вносите изменения).

person Paddyd    schedule 16.08.2013