@@ -279,7 +279,7 @@ public static function register($key, $value, $graceful = false)
279279 if ($ graceful ) {
280280 return ;
281281 }
282- self ::throwException (' Mage registry key " ' . $ key . ' " already exists' );
282+ self ::throwException (" Mage registry key $ key already exists " );
283283 }
284284 self ::$ _registry [$ key ] = $ value ;
285285 }
@@ -332,7 +332,7 @@ public static function setRoot($appRoot = '')
332332 if (is_dir ($ appRoot ) && is_readable ($ appRoot )) {
333333 self ::$ _appRoot = $ appRoot ;
334334 } else {
335- self ::throwException ($ appRoot . ' is not a directory or not readable by this user' );
335+ self ::throwException (" $ appRoot is not a directory or not readable by this user " );
336336 }
337337 }
338338
@@ -494,14 +494,18 @@ public static function getConfig()
494494 * @param callback $callback
495495 * @param array $data
496496 * @param string $observerName
497- * @param string $observerClass
497+ * @param class- string|'' $observerClass
498498 * @return Varien_Event_Collection
499+ * @throws Mage_Core_Exception
499500 */
500501 public static function addObserver ($ eventName , $ callback , $ data = [], $ observerName = '' , $ observerClass = '' )
501502 {
502503 if ($ observerClass == '' ) {
503504 $ observerClass = 'Varien_Event_Observer ' ;
504505 }
506+ if (!class_exists ($ observerClass )) {
507+ self ::throwException ("Invalid observer class: $ observerClass " );
508+ }
505509 $ observer = new $ observerClass ();
506510 $ observer ->setName ($ observerName )->addData ($ data )->setEventName ($ eventName )->setCallback ($ callback );
507511 return self ::getEvents ()->addObserver ($ observer );
@@ -525,128 +529,157 @@ public static function dispatchEvent($name, array $data = [])
525529 }
526530
527531 /**
528- * Retrieve model object
532+ * Retrieve helper singleton by alias
529533 *
530- * @link Mage_Core_Model_Config::getModelInstance
531- * @param string $modelClass
532- * @param array|string|object $arguments
533- * @return Mage_Core_Model_Abstract|false
534+ * ```php
535+ * $helper = Mage::helper('core'); // Mage_Core_Helper_Data
536+ * $helper = Mage::helper('core/url'); // Mage_Core_Helper_Url
537+ * ```
538+ *
539+ * @param string $helperAlias
540+ * @return Mage_Core_Helper_Abstract|false
534541 */
535- public static function getModel ( $ modelClass = '' , $ arguments = [] )
542+ public static function helper ( $ helperAlias )
536543 {
537- return self ::getConfig ()->getModelInstance ($ modelClass , $ arguments );
544+ $ registryKey = '_helper/ ' . $ helperAlias ;
545+ if (!isset (self ::$ _registry [$ registryKey ])) {
546+ self ::register ($ registryKey , self ::getConfig ()->getHelperInstance ($ helperAlias ));
547+ }
548+ return self ::$ _registry [$ registryKey ];
538549 }
539550
540551 /**
541- * Retrieve model object singleton
552+ * Retrieve model instance by alias
553+ *
554+ * ```php
555+ * $model = Mage::getModel('core/store'); // Mage_Core_Model_Store
556+ * ```
542557 *
543- * @param string $modelClass
544- * @return Mage_Core_Model_Abstract|false
558+ * @param string $modelAlias
559+ * @param array|string|object $arguments
560+ * @return Mage_Core_Model_Abstract|false
545561 */
546- public static function getSingleton ( $ modelClass = '' , array $ arguments = [])
562+ public static function getModel ( $ modelAlias , $ arguments = [])
547563 {
548- $ registryKey = '_singleton/ ' . $ modelClass ;
549- if (!isset (self ::$ _registry [$ registryKey ])) {
550- self ::register ($ registryKey , self ::getModel ($ modelClass , $ arguments ));
551- }
552- return self ::$ _registry [$ registryKey ];
564+ return self ::getConfig ()->getModelInstance ($ modelAlias , $ arguments );
553565 }
554566
555567 /**
556- * Retrieve object of resource model
568+ * Retrieve model singleton by alias
569+ *
570+ * ```php
571+ * $model = Mage::getModel('core/session'); // Mage_Core_Model_Session
572+ * ```
557573 *
558- * @param string $modelClass
559- * @param array $arguments
560- * @return Mage_Core_Model_Resource_Db_Collection_Abstract|false
574+ * @param string $modelAlias
575+ * @return Mage_Core_Model_Abstract|false
561576 */
562- public static function getResourceModel ( $ modelClass , $ arguments = [])
577+ public static function getSingleton ( $ modelAlias , array $ arguments = [])
563578 {
564- return self ::getConfig ()->getResourceModelInstance ($ modelClass , $ arguments );
579+ $ registryKey = '_singleton/ ' . $ modelAlias ;
580+ if (!isset (self ::$ _registry [$ registryKey ])) {
581+ self ::register ($ registryKey , self ::getModel ($ modelAlias , $ arguments ));
582+ }
583+ return self ::$ _registry [$ registryKey ];
565584 }
566585
567586 /**
568- * Retrieve Controller instance by ClassName
587+ * Retrieve resource model by alias
569588 *
570- * @param string $class
571- * @param Mage_Core_Controller_Request_Http $request
572- * @param Mage_Core_Controller_Response_Http $response
573- * @return Mage_Core_Controller_Front_Action
589+ * ```php
590+ * $model = Mage::getResourceModel('core/store_collection'); // Mage_Core_Model_Resource_Store_Collection
591+ * ```
592+ *
593+ * @param string $modelAlias
594+ * @param array $arguments
595+ * @return Mage_Core_Model_Resource_Db_Collection_Abstract|false
574596 */
575- public static function getControllerInstance ( $ class , $ request , $ response , array $ invokeArgs = [])
597+ public static function getResourceModel ( $ modelAlias , $ arguments = [])
576598 {
577- return new $ class ( $ request , $ response , $ invokeArgs );
599+ return self :: getConfig ()-> getResourceModelInstance ( $ modelAlias , $ arguments );
578600 }
579601
580602 /**
581- * Retrieve resource model object singleton
603+ * Retrieve resource model singleton by alias
582604 *
583- * @param string $modelClass
584- * @return object
605+ * ```php
606+ * $model = Mage::getResourceSingleton('core/session'); // Mage_Core_Model_Resource_Session
607+ * ```
608+ *
609+ * @param string $modelAlias
610+ * @return Mage_Core_Model_Resource_Db_Collection_Abstract|false
585611 */
586- public static function getResourceSingleton ($ modelClass = '' , array $ arguments = [])
612+ public static function getResourceSingleton ($ modelAlias , array $ arguments = [])
587613 {
588- $ registryKey = '_resource_singleton/ ' . $ modelClass ;
614+ $ registryKey = '_resource_singleton/ ' . $ modelAlias ;
589615 if (!isset (self ::$ _registry [$ registryKey ])) {
590- self ::register ($ registryKey , self ::getResourceModel ($ modelClass , $ arguments ));
616+ self ::register ($ registryKey , self ::getResourceModel ($ modelAlias , $ arguments ));
591617 }
592618 return self ::$ _registry [$ registryKey ];
593619 }
594620
595621 /**
596- * Retrieve block object
622+ * Retrieve resource helper model singleton
597623 *
598- * @param string $type
599- * @return Mage_Core_Block_Abstract|false
624+ * ```php
625+ * $model = Mage::getResourceHelper('core'); // Mage_Core_Model_Resource_Helper_Mysql4
626+ * ```
627+ *
628+ * @param string $moduleAlias
629+ * @return Mage_Core_Model_Resource_Helper_Abstract|false
600630 */
601- public static function getBlockSingleton ( $ type )
631+ public static function getResourceHelper ( $ moduleAlias )
602632 {
603- $ action = self ::app ()->getFrontController ()->getAction ();
604- return $ action ? $ action ->getLayout ()->getBlockSingleton ($ type ) : false ;
633+ $ registryKey = '_resource_helper/ ' . $ moduleAlias ;
634+ if (!isset (self ::$ _registry [$ registryKey ])) {
635+ self ::register ($ registryKey , self ::getConfig ()->getResourceHelperInstance ($ moduleAlias ));
636+ }
637+ return self ::$ _registry [$ registryKey ];
605638 }
606639
607640 /**
608- * Retrieve helper object
641+ * Retrieve Controller instance by ClassName
609642 *
610- * @param string $name the helper name
611- * @return Mage_Core_Helper_Abstract
643+ * @param class-string $class
644+ * @param Mage_Core_Controller_Request_Http $request
645+ * @param Mage_Core_Controller_Response_Http $response
646+ * @return Mage_Core_Controller_Front_Action
647+ * @throws Mage_Core_Exception
612648 */
613- public static function helper ( $ name )
649+ public static function getControllerInstance ( $ class , $ request , $ response , array $ invokeArgs = [] )
614650 {
615- $ registryKey = '_helper/ ' . $ name ;
616- if (!isset (self ::$ _registry [$ registryKey ])) {
617- $ helperClass = self ::getConfig ()->getHelperClassName ($ name );
618- self ::register ($ registryKey , new $ helperClass ());
651+ if (!class_exists ($ class )) {
652+ self ::throwException ("Invalid controller class: $ class " );
619653 }
620- return self :: $ _registry [ $ registryKey ] ;
654+ return new $ class ( $ request , $ response , $ invokeArgs ) ;
621655 }
622656
623657 /**
624- * Retrieve resource helper object
658+ * Retrieve block object
625659 *
626- * @param string $moduleName
627- * @return Mage_Core_Model_Resource_Helper_Abstract
660+ * @param string $type
661+ * @return Mage_Core_Block_Abstract|false
628662 */
629- public static function getResourceHelper ( $ moduleName )
663+ public static function getBlockSingleton ( $ type )
630664 {
631- $ registryKey = '_resource_helper/ ' . $ moduleName ;
632- if (!isset (self ::$ _registry [$ registryKey ])) {
633- $ helperClass = self ::getConfig ()->getResourceHelper ($ moduleName );
634- self ::register ($ registryKey , $ helperClass );
635- }
636- return self ::$ _registry [$ registryKey ];
665+ $ action = self ::app ()->getFrontController ()->getAction ();
666+ return $ action ? $ action ->getLayout ()->getBlockSingleton ($ type ) : false ;
637667 }
638668
639669 /**
640670 * Return new exception by module to be thrown
641671 *
642- * @param string $module
672+ * @param string $moduleName
643673 * @param string $message
644674 * @param integer $code
645675 * @return Mage_Core_Exception
646676 */
647- public static function exception ($ module = 'Mage_Core ' , $ message = '' , $ code = 0 )
677+ public static function exception ($ moduleName = 'Mage_Core ' , $ message = '' , $ code = 0 )
648678 {
649- $ className = $ module . '_Exception ' ;
679+ $ className = $ moduleName . '_Exception ' ;
680+ if (!class_exists ($ className )) {
681+ $ className = 'Mage_Core_Exception ' ;
682+ }
650683 return new $ className ($ message , $ code );
651684 }
652685
@@ -655,6 +688,7 @@ public static function exception($module = 'Mage_Core', $message = '', $code = 0
655688 *
656689 * @param string $message
657690 * @param string $messageStorage
691+ * @return never
658692 * @throws Mage_Core_Exception
659693 */
660694 public static function throwException ($ message , $ messageStorage = null )
0 commit comments