Параметры-атрибуты в PHP
<input type="checkbox" value="check" onclick="SelectAll"/>
Что мы тут видим? Какому-то объекту "input" на обработку передаются три параметра:
- type
- value
- onclick
причём каждый из них имеет своё значение.
Что измениться, если мы эти атрибуты поменяем местами? Ничего. Это раз - передача параметров не привязана к их месту, в отличие от позиционных функций в РНР, где, например, в вызове функции explode() первым параметром идёт именно разделитель, вторым - именно входная строка.
Далее, у объекта "input" могут быть несколько дополнительных необязательных атрибутов, которых нет в вызове, но которые, будучи вызванными, заставят объёкт вести себя совершенно по-другому. Что c этим делать в РНР? Можно попробовать перегрузить методы, если есть класс, а можно всем входным параметрам функции задать дефолты, чтобы можно было вызывать функцию с любыми комбинациями параметров.
Но это всё не удобно. Выход, как мне кажется - в передаче функции единственного параметра, и тип его - ассоциативный массив или объект.
Допустим, по аналогии с вышеприведённым примером, в РНР у нас есть функция "input". Формируем параметр и передаём его функции:
<?
$arr = array();
$arr["type"] = "checkbox";
$arr["value"] = "check";
$arr["onclick"] = "SelectAll";
input($arr);
?>
1 комментов:
Сочувствую пыхапистам:
def somefunc(first,second):
print first,second
somefunc(1,2)
1 2
somefunc(second=1,first=2)
2 1
Это python.
Отправить комментарий