Skip to content

Commit 1b1052a

Browse files
committed
Bring some exceptions under control & cleanup get instance methods
1 parent 2c8c9fe commit 1b1052a

File tree

5 files changed

+258
-212
lines changed

5 files changed

+258
-212
lines changed

app/Mage.php

Lines changed: 100 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ public static function register($key, $value, $graceful = false)
278278
if ($graceful) {
279279
return;
280280
}
281-
self::throwException('Mage registry key "' . $key . '" already exists');
281+
self::throwException("Mage registry key $key already exists");
282282
}
283283
self::$_registry[$key] = $value;
284284
}
@@ -331,7 +331,7 @@ public static function setRoot($appRoot = '')
331331
if (is_dir($appRoot) && is_readable($appRoot)) {
332332
self::$_appRoot = $appRoot;
333333
} else {
334-
self::throwException($appRoot . ' is not a directory or not readable by this user');
334+
self::throwException("$appRoot is not a directory or not readable by this user");
335335
}
336336
}
337337

@@ -493,14 +493,18 @@ public static function getConfig()
493493
* @param callback $callback
494494
* @param array $data
495495
* @param string $observerName
496-
* @param string $observerClass
496+
* @param class-string|'' $observerClass
497497
* @return Varien_Event_Collection
498+
* @throws Mage_Core_Exception
498499
*/
499500
public static function addObserver($eventName, $callback, $data = [], $observerName = '', $observerClass = '')
500501
{
501502
if ($observerClass == '') {
502503
$observerClass = 'Varien_Event_Observer';
503504
}
505+
if (!class_exists($observerClass)) {
506+
self::throwException("Invalid observer class: $observerClass");
507+
}
504508
$observer = new $observerClass();
505509
$observer->setName($observerName)->addData($data)->setEventName($eventName)->setCallback($callback);
506510
return self::getEvents()->addObserver($observer);
@@ -524,128 +528,157 @@ public static function dispatchEvent($name, array $data = [])
524528
}
525529

526530
/**
527-
* Retrieve model object
531+
* Retrieve helper singleton by alias
528532
*
529-
* @link Mage_Core_Model_Config::getModelInstance
530-
* @param string $modelClass
531-
* @param array|string|object $arguments
532-
* @return Mage_Core_Model_Abstract|false
533+
* ```php
534+
* $helper = Mage::helper('core'); // Mage_Core_Helper_Data
535+
* $helper = Mage::helper('core/url'); // Mage_Core_Helper_Url
536+
* ```
537+
*
538+
* @param string $helperAlias
539+
* @return Mage_Core_Helper_Abstract|false
533540
*/
534-
public static function getModel($modelClass = '', $arguments = [])
541+
public static function helper($helperAlias)
535542
{
536-
return self::getConfig()->getModelInstance($modelClass, $arguments);
543+
$registryKey = '_helper/' . $helperAlias;
544+
if (!isset(self::$_registry[$registryKey])) {
545+
self::register($registryKey, self::getConfig()->getHelperInstance($helperAlias));
546+
}
547+
return self::$_registry[$registryKey];
537548
}
538549

539550
/**
540-
* Retrieve model object singleton
551+
* Retrieve model instance by alias
552+
*
553+
* ```php
554+
* $model = Mage::getModel('core/store'); // Mage_Core_Model_Store
555+
* ```
541556
*
542-
* @param string $modelClass
543-
* @return Mage_Core_Model_Abstract|false
557+
* @param string $modelAlias
558+
* @param array|string|object $arguments
559+
* @return Mage_Core_Model_Abstract|false
544560
*/
545-
public static function getSingleton($modelClass = '', array $arguments = [])
561+
public static function getModel($modelAlias, $arguments = [])
546562
{
547-
$registryKey = '_singleton/' . $modelClass;
548-
if (!isset(self::$_registry[$registryKey])) {
549-
self::register($registryKey, self::getModel($modelClass, $arguments));
550-
}
551-
return self::$_registry[$registryKey];
563+
return self::getConfig()->getModelInstance($modelAlias, $arguments);
552564
}
553565

554566
/**
555-
* Retrieve object of resource model
567+
* Retrieve model singleton by alias
568+
*
569+
* ```php
570+
* $model = Mage::getModel('core/session'); // Mage_Core_Model_Session
571+
* ```
556572
*
557-
* @param string $modelClass
558-
* @param array $arguments
559-
* @return Mage_Core_Model_Resource_Db_Collection_Abstract|false
573+
* @param string $modelAlias
574+
* @return Mage_Core_Model_Abstract|false
560575
*/
561-
public static function getResourceModel($modelClass, $arguments = [])
576+
public static function getSingleton($modelAlias, array $arguments = [])
562577
{
563-
return self::getConfig()->getResourceModelInstance($modelClass, $arguments);
578+
$registryKey = '_singleton/' . $modelAlias;
579+
if (!isset(self::$_registry[$registryKey])) {
580+
self::register($registryKey, self::getModel($modelAlias, $arguments));
581+
}
582+
return self::$_registry[$registryKey];
564583
}
565584

566585
/**
567-
* Retrieve Controller instance by ClassName
586+
* Retrieve resource model by alias
568587
*
569-
* @param string $class
570-
* @param Mage_Core_Controller_Request_Http $request
571-
* @param Mage_Core_Controller_Response_Http $response
572-
* @return Mage_Core_Controller_Front_Action
588+
* ```php
589+
* $model = Mage::getResourceModel('core/store_collection'); // Mage_Core_Model_Resource_Store_Collection
590+
* ```
591+
*
592+
* @param string $modelAlias
593+
* @param array $arguments
594+
* @return Mage_Core_Model_Resource_Db_Collection_Abstract|false
573595
*/
574-
public static function getControllerInstance($class, $request, $response, array $invokeArgs = [])
596+
public static function getResourceModel($modelAlias, $arguments = [])
575597
{
576-
return new $class($request, $response, $invokeArgs);
598+
return self::getConfig()->getResourceModelInstance($modelAlias, $arguments);
577599
}
578600

579601
/**
580-
* Retrieve resource vodel object singleton
602+
* Retrieve resource model singleton by alias
581603
*
582-
* @param string $modelClass
583-
* @return object
604+
* ```php
605+
* $model = Mage::getResourceSingleton('core/session'); // Mage_Core_Model_Resource_Session
606+
* ```
607+
*
608+
* @param string $modelAlias
609+
* @return Mage_Core_Model_Resource_Db_Collection_Abstract|false
584610
*/
585-
public static function getResourceSingleton($modelClass = '', array $arguments = [])
611+
public static function getResourceSingleton($modelAlias, array $arguments = [])
586612
{
587-
$registryKey = '_resource_singleton/' . $modelClass;
613+
$registryKey = '_resource_singleton/' . $modelAlias;
588614
if (!isset(self::$_registry[$registryKey])) {
589-
self::register($registryKey, self::getResourceModel($modelClass, $arguments));
615+
self::register($registryKey, self::getResourceModel($modelAlias, $arguments));
590616
}
591617
return self::$_registry[$registryKey];
592618
}
593619

594620
/**
595-
* Retrieve block object
621+
* Retrieve resource helper model singleton
596622
*
597-
* @param string $type
598-
* @return Mage_Core_Block_Abstract|false
623+
* ```php
624+
* $model = Mage::getResourceHelper('core'); // Mage_Core_Model_Resource_Helper_Mysql4
625+
* ```
626+
*
627+
* @param string $moduleAlias
628+
* @return Mage_Core_Model_Resource_Helper_Abstract|false
599629
*/
600-
public static function getBlockSingleton($type)
630+
public static function getResourceHelper($moduleAlias)
601631
{
602-
$action = self::app()->getFrontController()->getAction();
603-
return $action ? $action->getLayout()->getBlockSingleton($type) : false;
632+
$registryKey = '_resource_helper/' . $moduleAlias;
633+
if (!isset(self::$_registry[$registryKey])) {
634+
self::register($registryKey, self::getConfig()->getResourceHelperInstance($moduleAlias));
635+
}
636+
return self::$_registry[$registryKey];
604637
}
605638

606639
/**
607-
* Retrieve helper object
640+
* Retrieve Controller instance by ClassName
608641
*
609-
* @param string $name the helper name
610-
* @return Mage_Core_Helper_Abstract
642+
* @param class-string $class
643+
* @param Mage_Core_Controller_Request_Http $request
644+
* @param Mage_Core_Controller_Response_Http $response
645+
* @return Mage_Core_Controller_Front_Action
646+
* @throws Mage_Core_Exception
611647
*/
612-
public static function helper($name)
648+
public static function getControllerInstance($class, $request, $response, array $invokeArgs = [])
613649
{
614-
$registryKey = '_helper/' . $name;
615-
if (!isset(self::$_registry[$registryKey])) {
616-
$helperClass = self::getConfig()->getHelperClassName($name);
617-
self::register($registryKey, new $helperClass());
650+
if (!class_exists($class)) {
651+
self::throwException("Invalid controller class: $class");
618652
}
619-
return self::$_registry[$registryKey];
653+
return new $class($request, $response, $invokeArgs);
620654
}
621655

622656
/**
623-
* Retrieve resource helper object
657+
* Retrieve block object
624658
*
625-
* @param string $moduleName
626-
* @return Mage_Core_Model_Resource_Helper_Abstract
659+
* @param string $type
660+
* @return Mage_Core_Block_Abstract|false
627661
*/
628-
public static function getResourceHelper($moduleName)
662+
public static function getBlockSingleton($type)
629663
{
630-
$registryKey = '_resource_helper/' . $moduleName;
631-
if (!isset(self::$_registry[$registryKey])) {
632-
$helperClass = self::getConfig()->getResourceHelper($moduleName);
633-
self::register($registryKey, $helperClass);
634-
}
635-
return self::$_registry[$registryKey];
664+
$action = self::app()->getFrontController()->getAction();
665+
return $action ? $action->getLayout()->getBlockSingleton($type) : false;
636666
}
637667

638668
/**
639669
* Return new exception by module to be thrown
640670
*
641-
* @param string $module
671+
* @param string $moduleName
642672
* @param string $message
643673
* @param integer $code
644674
* @return Mage_Core_Exception
645675
*/
646-
public static function exception($module = 'Mage_Core', $message = '', $code = 0)
676+
public static function exception($moduleName = 'Mage_Core', $message = '', $code = 0)
647677
{
648-
$className = $module . '_Exception';
678+
$className = $moduleName . '_Exception';
679+
if (!class_exists($className)) {
680+
$className = 'Mage_Core_Exception';
681+
}
649682
return new $className($message, $code);
650683
}
651684

@@ -654,6 +687,7 @@ public static function exception($module = 'Mage_Core', $message = '', $code = 0
654687
*
655688
* @param string $message
656689
* @param string $messageStorage
690+
* @return never
657691
* @throws Mage_Core_Exception
658692
*/
659693
public static function throwException($message, $messageStorage = null)

app/code/core/Mage/Core/Controller/Varien/Front.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
* @category Mage
1919
* @package Mage_Core
2020
*
21-
* @method Mage_Core_Controller_Varien_Action getAction()
21+
* @method Mage_Core_Controller_Varien_Action|null getAction()
2222
* @method $this setAction(Mage_Core_Controller_Varien_Action $value)
2323
* @method bool getNoRender()
2424
*/

0 commit comments

Comments
 (0)