Skip to content

Commit ff0ca3d

Browse files
committed
Bring some exceptions under control & cleanup get instance methods
1 parent 3adb997 commit ff0ca3d

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
@@ -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)

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)