Merge pull request #477 from nyeholt/injector_bugfixes

A few bug fixes and changes to make the injector play better with existing code.
This commit is contained in:
Sean Harvey 2012-05-22 14:32:24 -07:00
commit 627def6be3
4 changed files with 4 additions and 5 deletions

View File

@ -118,7 +118,7 @@ class Config {
* @return Config
*/
static public function inst() {
if (!self::$instance) self::$instance = singleton('Config');
if (!self::$instance) self::$instance = new Config();
return self::$instance;
}

View File

@ -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] = Object::strong_create($className,null, true);
$_SINGLETONS[$className] = Injector::inst()->get($className);
if(!$_SINGLETONS[$className]) user_error("singleton() Unknown class '$className'", E_USER_ERROR);
}
return $_SINGLETONS[$className];

View File

@ -235,8 +235,7 @@ abstract class Object {
$class = self::$strong_classes[$class];
}
$reflector = new ReflectionClass($class);
return $reflector->newInstanceArgs($args);
return Injector::inst()->createWithArgs($class, $args);
}
/**

View File

@ -92,7 +92,7 @@ class Versioned extends DataExtension {
* The first stage is consiedered the 'default' stage, the last stage is
* considered the 'live' stage.
*/
function __construct($stages) {
function __construct($stages=array('Stage','Live')) {
parent::__construct();
if(!is_array($stages)) {