Аргументы функций PHP — использовать массив или нет?

Мне нравится создавать свои PHP-функции, используя в качестве аргументов пары ключ=>значение (массивы) вместо отдельные параметры.

Например, я предпочитаю:

function useless_func($params) {
    if (!isset($params['text'])) { $params['text'] = "default text"; }     
    if (!isset($params['text2'])) { $params['text2'] = "default text2"; }   
    if (!isset($params['text3'])) { $params['text3'] = "default text3"; }   
    echo $params['text'].$params['text2'].$params['text3'];
    return;
}

И мне не нравится:

function useless_func($text = "default text", $text2 = "default text2", $text3 = "default text3") {
        echo $text.$text2.$text3;
    return;
}

Я впервые увидел, как это широко используется в кодовой базе Wordpress.

Причина, по которой я предпочитаю массивы:

  • ] Аргументы функции могут быть предоставлены в любом порядке
  • Легче читать код / ​​более самодокументирован (на мой взгляд)
  • Менее подвержен ошибкам, потому что при вызове функции я должен исследовать правильные ключи массива

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

Я ищу какие-то общие совет и руководство от экспертов, которые могли бы дать представление: какой лучший или более правильный способ сделать это?

10
задан Michael Myers 5 May 2012 в 19:07
поделиться