For read simple use of autoloader you can see my previous post here on below link:
http://nelsondesai.blogspot.in/2012/09/how-to-use-zend-autoloader.html
Now Advance Use of autoloader for cloud base database service or any.
Que: I have two different class [one amazon cloud and second azure cloud] with same functions name like [insert, update, join etc].
Notes: both class must have same function.
Now i want to choose database[class] dynamic.
So, it's not good to go every controller and we change a class name where we use a class object.
Solution is here,
Let's start..
first file structure.. default I always prefer to use library folder.
library
|--- Amazon
|--- Action.php [with class Amazon_Action]
|--- Azure
|--- Action.php [with class Azure_Action]
In solution you can also use a custom folder replace of library like [application/cloud/] folder..for custom folder read my previous post Click Here.
Now in index.php
just define which cloud db we want to use..
define('_APP_BOOT_LIB','Amazon_');
Now in application Bootstrap.phppublic function _initAutoloaders()
{
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace(_APP_BOOT_LIB);
if(_APP_BOOT_LIB == "Amazon_")
$objUser = new Amazon_Action();
else if(_APP_BOOT_LIB == "Azure_")
$objUser = new Azure_Action();
//Here two way to store object
Zend_Registry::set('objUser', $objUser);
//for get objUser in controller[$objUser = Zend_Registry::get('objUser');]
// $this->objUser = $objUser; //for get objUser in controller[$objUser = $this->_invokeArgs['bootstrap']->objUser;]
}
Now in controller IndexController.php
we can get back object to use...
$objUser = Zend_Registry::get('objUser');
//$objUser = $this->_invokeArgs['bootstrap']->objUser;
//Notes: both class must have same function..
$objUser->query($params);
$objUser->insert($params);
Gud Luck..
For more details mail me on nelson.desai@gmail.com or comments here.
--
Thank You
Nelson Desai
12:04 AM
Unknown



1 comments:
good job
Post a Comment