Adrian World Design
  • Services
    • Website Consulting
    • Startup Consulting
    • Zend Development
  • Portfolio
    • My Framework
  • Knowledge
    • Web Standards
    • PHP bare-bones
    • Zend Framework
    • Zend Framework 2
    • Git - Github
    • Search Engine Optimization
    • Web Hosting
    • Linux
    • Microsoft Windows
    • Web Browsers
    • Mobile Devices
  • About
    • Business
    • Professionally
    • Personally
  • Contact
    • Contact Form
    • Phone
    • Email
    • Messaging

Knowledge Base Overview

Current application config

Knowledge ⇒ Zend Framework ⇒ Helpful Tips ⇒ Current application config
Tweet
Share on Tumblr

Created: Dec 4, 2011, 8:50:31 AM CDTLast updated: Apr 1, 2012, 8:02:46 AM CDT

Have you ever wondered how to get the current configuration from your application.ini file in your Zend Framework MVC project?

In this article I'm not only going to tell you where you get the configuration from but also how the Zend application put it there in the first place—plus as a bonus an interesting tip. Please also read the disclaimer at the bottom!

Follow the path

When you search for this question you will find many interesting answers but they all are a little bit weird; most of them don't match my understanding about the Zend Framework. So, I figured lets do some more research and dig through some code.

The first question I have is this one: "What happens with the application.ini file anyway?" When you have this answer it quickly leads to the solution for the initial question.

And here is the bonus tip I have promised: If you want to find the answer about something in the Zend Framework then just look at the code. After all, isn't that why we love OSS?

The config is an option

If you run your MVC Zend Framework based on the more or less default instruction then you will have the following line of code in your index.php file:

// Create application, bootstrap, and run
$application = new Zend_Application(
  APPLICATION_ENV,
  APPLICATION_PATH . '/configs/application.ini' );
$application->bootstrap()->run();

Now we simply follow the path in the code of the Zend_Application class and we will discover two things:

  1. the configuration gets stored in a "_option" property
  2. the Zend_Application object is passed into the bootstrap object

Second question: "What happens in the bootstrap class?"

Looking at our bootstrap.php file which extends down to the BootstrapAbstract.php file and the constructor we discover another thing:

  • the configuration is stored in yet another "_option" property

This time it belongs to the bootstrap object, though.

Fetch the bootstrap

So, there you have it. All is left now is fetch your bootstrap and call the getOptions method. If you are in a controller you can use getInvokeArg and in other places you get the frontController first. Here's the full code

// use this in a controller class
$currentConfig = $this->getInvokeArg('bootstrap')->getOptions();
// use this in other places
$front = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getOptions()

Disclaimer

Two important things to note and understand about this getOptions() method.

  1. The returned data is a regular PHP array and not a Zend_Config or Zend_Config_Ini object as you might suspect.
  2. You will get the current configuration only, i.e. the tree depending on your environment set with APPLICATION_ENV. Although Zend_Application reads the whole file it only adds the active configuration to the option property!

If you want to fetch the whole configuration, i.e. the whole content of the application.ini you will have to get the file itself with Zend_Config_Ini if it is an ini file.

blog comments powered by Disqus
Prev
Next

Powered by FeedBurner Load our "Knowledge Base" feed in your RSS feeder

Follow us on Twitter
Follow us on Facebook
Follow us on LinkedIn
Follow us on Google+

All rights reserved, Adrian World Design ©2009–2022 Powered by Wejas Framework

Jump to Top