Обычно вы не можете, но я думаю, что есть много способов передать именованные аргументы в функцию PHP. Лично я передаю определение с использованием массивов и просто вызываю то, что мне нужно передать:
class Test{
public $a = false;
private $b = false;
public $c = false;
public $d = false;
public $e = false;
public function _factory(){
$args = func_get_args();
$args = $args[0];
$this->a = array_key_exists("a",$args) ? $args["a"] : 0;
$this->b = array_key_exists("b",$args) ? $args["b"] : 0;
$this->c = array_key_exists("c",$args) ? $args["c"] : 0;
$this->d = array_key_exists("d",$args) ? $args["d"] : 0;
$this->e = array_key_exists("e",$args) ? $args["e"] : 0;
}
public function show(){
var_dump($this);
}
}
$test = new Test();
$args["c"]=999;
$test->_factory($args);
$test->show();
живой пример здесь:
http://sandbox.onlinephpfunctions.com/code/d7f27c6e504737482d396cbd6cdf1cc118e8c1ff
Если мне нужно передать 10 аргументов, и 3 из них - это данные, которые мне действительно нужны, ДАЖЕ НЕ УМНЫЙ для передачи в функцию что-то вроде
return myfunction(false,false,10,false,false,"date",false,false,false,"desc");
С подходом, который я даю, вы можете установить любой из 10 аргументов в массив:
$arr['count']=10;
$arr['type']="date";
$arr['order']="desc";
return myfunction($arr);
У меня есть запись в моем блоге, объясняющая этот процесс более подробно.
http://www.tbogard.com/2013/03/07/passing-named-arguments-to-a-function-in-php