sorry_i_noob
@sorry_i_noob

Можно ли в PHP передавать параметры функции при ее вызове в произвольном порядке?

В JS (JQuery), например, можно вот так:
$.ajax({
type: "POST",
url: $this.data('settings').url,
data: $this.data('settings').data,
dataType: "json",
success: function (data) { ... }
});

Или вот так (я поменял параметры местами):
$.ajax({
success: function (data) { ... },
url: $this.data('settings').url,
data: $this.data('settings').data,
dataType: "json",
type: "POST"	
});

А в php можно сделать что-то подобное? Кроме передачи ассоциативного массива в качестве параметра и получения значений этого массива по ключам (в написании которых легко ошибиться, сделать опечатку).
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
@iliya936
Типичный Битриксойд
В приведенном примере, ты предаешь такой же "ассоциативный массив" называемый объектом (обрати внимание что функция ajax принимает первым параметром объект {} в который ты прописываешь свойства).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
function foo($arParams) {

}

где - $arParams ассоциативный массив
Ответ написан
Комментировать
t-alexashka
@t-alexashka
Сразу пишу legacy код
ну так сделайте ф-ю которая принимает 1 параметр $params и внутри ф-ии уже проверяйте что там есть.

function somefunc($params = []) {
	if(isset($params['param1'])) {
		// что-то делаете
	}
	if(isset($params['param2'])) {
		// что-то делаете
	}
}


и вызываете с передачей ключей в любом порядке:

somefunc();
somefunc([
	'param1' => 123,
	'param2' => 456,
]);
somefunc([
	'param2' => 456,
	'param1' => 123,
]);
somefunc([
	'somedata' => 789, // проигнорируется
]);
Ответ написан
402d
@402d
начинал с бейсика на УКНЦ в 1988
Вредное желание.
Во первых параметры отлично можно задокументировать и будет работать авто проверка
/**
*@param string  Описание что за строка
*@param int Описание к числу
*/
func(Mask,Number){}

Во вторых в 7ке стало еще лучше
php.net/manual/ru/migration70.new-features.php

В третьих не совсем ваш случай, но ввели (array ...$arrays)

Ближайшее к вашим хотелкам
объявление сперва структуры объекта и что функция принимает его как аргумент
/**
 * @property string $Maska
 * @property int $Number
 **/
class MyParam{}

function MyFunc(MyParam $p){}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы