Joomla 2.5组件范围内的全局变量

Joomla 2.5组件范围内的全局变量,joomla,joomla2.5,Joomla,Joomla2.5,我正在开发定制的Joomla2.5后端组件。我想知道在我的组件范围内使变量全局化的最佳实践。我应该把声明放在主控制器的组件中吗 class MyController extends JController { /** * * @var object External database object */ public $dbExternal; function __con

我正在开发定制的Joomla2.5后端组件。我想知道在我的组件范围内使变量全局化的最佳实践。我应该把声明放在主控制器的组件中吗

class MyController extends JController
{       

        /**
         * 
         * @var object External database object 
         */
        public $dbExternal;


        function __construct($config = array()) 
        {

            $this->dbExternal = $this->_getDbInstance();            
            JTable::setDbo($this->dbExternal);

            parent::__construct($config);

        }   

        /**
     * Display task
     *
     * @return void
     */
    function display($cachable = false, $urlparams = false) 
    {
        // set default view if not set
        JRequest::setVar('view', JRequest::getCmd('view', 'My'));

        // call parent behavior
        parent::display($cachable);

        // Set the submenu
        MyHelper::addSubmenu('messages');
    }

        /**
        * Getting instance of the database 
        * 
        * @return instance $dbExternal Return db instance on success
        */
        private function _getDbInstance()
        {
            $params = $this->_getDbParams();

            $dbExternal  = JDatabase::getInstance($params);

            if ($dbExternal->getErrorNum() > 0) 
            {                
               JError::raiseWarning(500, 'JDatabase::getInstance: '.
               $dbExternal->getErrorMsg());
               $this->isError = true;
            }

            return $dbExternal;
        } 

        /**
         * Getting external db parameters
         * 
         * @return array $dbParamsArr Return db params on success
         */
        private function _getDbParams()
        {
            $dbParamsArr              = array();

            $params = JComponentHelper::getParams('com_my');

            $dbParamsArr['host']      = $params->get('db_host');  
            $dbParamsArr['user']      = $params->get('db_user');  
            $dbParamsArr['password']  = $params->get('db_password');  
            $dbParamsArr['database']  = $params->get('db_database');   
            $dbParamsArr['driver']    = $params->get('db_driver');

            return $dbParamsArr;
        }
}
因此,我希望在任何其他组件控制器或模型中达到$dbExternal。有什么想法吗?

要从另一个组件访问$dbExternal变量,需要先实例化一个MyController对象。在拥有MyController实例之前,$dbExternal变量不存在于任何位置


我有一个想法,将其放入components helper类中,并在其他组件位置使用它。
$myController = new MyController();
$dbExternal = $myController->$dbExternal;