Skip to content
Browse files

Revert "BUGFIX Versioned's constructor doesn't provide suitable defau…

…lts. Previously a bug/feature in singleton, where it would pass null,true as params to strong_create, which would then get passed through as params to Versioned's constructor, meant that the code still executed fine (as was set to something that wasn't an array, so the null and true were instead taken as args). The fact that the usage of singleton(Versioned) never really used the classes code, purely for value lookup, meant that this never propagated errors. I've now switched singleton() to use the injector for retrieving values, which means these dud values are no longer passed through"

This reverts commit 5eaca34.
  • Loading branch information...
1 parent 627def6 commit 29e04a10497fdcb68e65769f12b9962db956b1b6 @halkyon halkyon committed May 23, 2012
Showing with 5 additions and 4 deletions.
  1. +1 −1 core/Config.php
  2. +1 −1 core/Core.php
  3. +2 −1 core/Object.php
  4. +1 −1 model/Versioned.php
View
2 core/Config.php
@@ -118,7 +118,7 @@ static protected function type_mismatch() {
* @return Config
*/
static public function inst() {
- if (!self::$instance) self::$instance = new Config();
+ if (!self::$instance) self::$instance = singleton('Config');
return self::$instance;
}
View
2 core/Core.php
@@ -367,7 +367,7 @@ function singleton($className) {
if(!is_string($className)) user_error("singleton() passed bad class_name: " . var_export($className,true), E_USER_ERROR);
if(!isset($_SINGLETONS[$className])) {
if(!class_exists($className)) user_error("Bad class to singleton() - $className", E_USER_ERROR);
- $_SINGLETONS[$className] = Injector::inst()->get($className);
+ $_SINGLETONS[$className] = Object::strong_create($className,null, true);
if(!$_SINGLETONS[$className]) user_error("singleton() Unknown class '$className'", E_USER_ERROR);
}
return $_SINGLETONS[$className];
View
3 core/Object.php
@@ -235,7 +235,8 @@ public static function strong_create() {
$class = self::$strong_classes[$class];
}
- return Injector::inst()->createWithArgs($class, $args);
+ $reflector = new ReflectionClass($class);
+ return $reflector->newInstanceArgs($args);
}
/**
View
2 model/Versioned.php
@@ -92,7 +92,7 @@ static function reset() {
* The first stage is consiedered the 'default' stage, the last stage is
* considered the 'live' stage.
*/
- function __construct($stages=array('Stage','Live')) {
+ function __construct($stages) {
parent::__construct();
if(!is_array($stages)) {

0 comments on commit 29e04a1

Please sign in to comment.
Something went wrong with that request. Please try again.