2013/8/30 jbo...@openmv.com <jbo...@openmv.com> > On Wed Aug 28 11:47 AM, Nikita Popov wrote: > > > > https://wiki.php.net/rfc/variadics > > Interesting idea, expanding on: > > function log($message, ...$options) {} > > It would seem convenient to allow ...$options to be passed as a key-value > array of arguments as well: > function logA($message, ...$options[]) { echo count($options); } > > logA("foo"); // 0 > logA("foo", 1, 2); // 2 > logA("foo", array(1,2,3)); // 3 > > The difference here is that variadic options is declared as an optional > array, it would not support a 'typehint' forcing all arguments to be of the > same type. > It could be a way to support ~ named parameters > > // requires at least 1 argument named as 'level' > function logB($message, ...$options['level']) { > echo $options['level'] .' '. count($options); > } > > logB("foo"); // fails: 'level' argument > missing > logB("foo", 'notice'); //notice 1 > logB("foo", ['level' => 'notice']); // notice 1 > logB("foo", 'notice', 'extra'); // notice 2 > logB("foo", ['level' => 'notice'], 'extra'); // notice 2 > > // requires min 2 arguments > function logC($message, ...$options['level','priority']) { > echo 'level:'. $options['level']; > echo 'priority:'. $options['priority']; > } > logC("foo", "notice", 4); > logC("foo", ['level' => 'notice', 'priority' => 4]); > > That would remove the need for a "splat" or "scatter" operator. The > declaration "...$options[]" would mean, I accept an array of arguments > followed by extra arguments >
I'd recommend to use an object, or separate parameters instead. Thats not a use-case for argument-lists. Regards Sebastian > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > -- github.com/KingCrunch