Я бы не использовал ни Zend_Registry, ни константы по двум причинам
- В реестре вы никогда не знаете, что случилось с переменными.Каждая часть приложения может изменить их, и вы не будете замечены.Я вижу реестр фактически как anit-pattern.
- Константы загрязняют ваше приложение без необходимости.Что если вы используете для каждой конфигурации некоторую константу?Вам нужно сохранить дополнительный документ со всеми определенными константами, поддерживать его ужасно.
Что лучше всего, так это получить объект конфигурации непосредственно из начальной загрузки.В следующих примерах я предполагаю, что у вас есть это в вашем application.ini:
someservice.apikey = 12345678
someservice.passkey = 87654321
Начальная загрузка задается в качестве параметра в frontController.Если у вас есть контроллер действий, это упрощает процесс:
$serviceOptions = $this->getInvokeArg('bootstrap')->getOption('someservice');
Если у вас есть экземпляр службы в вашем контроллере, теперь вы можете передавать их через конструктор и / или установщик.
Если вы хотите получить параметры не внутри вашего контроллера, а где-то еще, вы можете использовать шаблон синглтона, который реализует frontController.Таким образом, в любом месте (конечно, только во время диспетчеризации, а не во время самой начальной загрузки) вы можете сделать это:
$frontController = Zend_Controller_Front::getInstance();
$serviceOptions = $frontController->getParam('bootstrap')
->getOption('someservice');
С помощью вышеуказанного метода вы в безопасности, у вас всегда есть правильная опция конфигурациинекоторые возможно мутировали.