Другое отличие состоит в том, что если вы не передадите аргумент, он будет по умолчанию равен array()
или null
, которые представляют собой два очень разных значения. Конечно, вы можете это проверить, но вам нужно будет принять это во внимание. empty
будет работать для обоих, но цикл foreach над null
не будет работать так хорошо, и различные функции массива также потерпят неудачу.
То, что вы заметили правильно: Передача null
для аргумента typehinted работает только если вы добавите = null
в объявление. Это справедливо не только для массивов, но и для объектов. В PHP в PHP нет способа сделать аргумент typehinted, который является обязательным, но может быть нулевым. Как только вы добавите =null
в декларацию, вы можете пройти null
, но вы также можете опустить параметр.
Если вам нет логической разницы между пустым массивом или значением null, я бы выбрал первый метод по умолчанию для пустого массива. Тогда, по крайней мере, вы поймете, что вход всегда является массивом. Я думаю, что добавьте ясность как для исполнителя функции, так и для программиста (-ов), которые ее используют. Но я думаю, это просто мнение и даже не сильный.
Моим главным советом было бы не делать аргумент необязательным вообще. По моему опыту это сделает использование таких функций неясным, особенно по мере роста кода и добавления дополнительных аргументов.