В своем вопросе вы говорите, что у вас есть многомерный массив, поэтому я так понимаю:
$config = array('foo' => array('bar' => array('baz' => 3)));
Вызов item('foo', 'bar', 'baz')
будет проходить до последнего массива и будет возвращаться 3. Еслиэто то, что вы хотите, вы можете просто написать $config['foo']['bar']['baz']
или поместить свои конфиги в ArrayObject и использовать либо запись доступа к массиву, либо $config->foo->bar->baz
(хотя все вложенные массивы тоже должны быть ArrayObjects).
Если вы хотите сохранить функцию, вы должны добавить некоторую проверку индекса, прежде чем захватывать его, потому что PHP выдаст Уведомление о неопределенных индексах.Кроме того, почему бы не использовать InvalidArgumentException вместо Exception.Подходит лучше для этого случая.
edit: удалена некоторая часть ответа, потому что это было больше похоже на громкое мышление
edit после комментариев Теб, я нахожу довольно неловким подход, чтобы заново изобрести доступ к массиву с помощью такого метода.По моему мнению, вы должны либо передать всю конфигурацию или подмножество своим объектам во время создания и позволить им брать все, что им нужно, через обычные методы доступа к массивам.Это позволит отделить ваши объекты от вашего configManager и упростит модификацию на более позднем этапе.