Zend Framework Layout
bootstrapping, php, zend-framework
Solution
The line from `application.ini`
resources.layout[] =
is equivalent to:
_initLayout() {}
in `Bootstrap.php`
Both of them are initializing new object, and this object is set as a `bootstrap` param, which is a container for some application resources (values returned by `_init` methods).
There are executed one by one, so to ensure one resource is initialized before the the current one, you force the order, using:
_initSomeResource() {
$this->bootstrap('otherResource');
// ..
return $someValue;
}
_initOtherResource() {
// ..
}
So the order of instantiating of the resources is:
- `otherResource`
- `someResource`
Now, you may also use:
$bootstrap->getParam('someResource'); // returns $someValue
Note, that you may encounter `Circular Dependency` error, when you try to execute each other before each one.
You may use as many `_init` methods you need, but to make them reusable, you may separate them to their own class, implementing `Zend_Application_Resource_Abstract` class.
There are some out of the box application resources, which you may find in `Zend/Application/Resource` directory. These are the resources, you are refering from `application.ini`, i.e.:
resources.view.encoding = "utf-8" ; in application.ini
Zend/Application/Resource/View.php (path to the resource class)
Zend_Application_Resource_View::setEncoding('UTF-8'); // equivalent pseudocode
Hope it's more clear now.
Problem
I'm beginning with Zend Framework and I would like to understand Bootstrap file. I've learned all `_init` methods are executed by default but it seems confusing to me. Anyway that is not what I would like to ask. A came around the `$this->bootstrap('layout');` action and I'm not sure if I understand this. Is this the resource.layout variable in application.ini file? I would like to really understand the bootstrap process in deep. I'm asking you for step by step explanation. Thanks in advance! So this is my bootstrap file: ``` class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initAutoload() { $moduleLoader = new Zend_Application_Module_Autoloader(array( 'namespace' => '', 'basePath' => APPLICATION_PATH )); return $moduleLoader; } function _initViewHelpers() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getView(); $view->doctype('XHTML1_STRICT'); $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8'); $view->headTitle()->setSeparator(' - '); $view->headTitle('Zend Framework Tutorial'); } } ```