使用以下代码:
<?php
class Loader {
private static $instances;
function __construct($class = null) {
return self::instance($class);
}
public static function instance($class) {
if(!isset(self::$instances[$class])) {
self::$instances[$class] = new $class();
}
return self::$instances[$class];
}
}
class Core {
}
$core = new Loader('Core');
print_r($core);
?>
我的print_r()返回对象Loader而不是对象Core,它在构造Loader后实例化。
感谢您的帮助!
答案 0 :(得分:8)
嗯?
如果你这样做
$core = new Loader('Core');
然后$ core将成为Loader的一个实例...... PS:构造函数不返回值。
您根本不需要实例化Loader。
这样做:
<?php
class Loader {
private static $instances;
public static function instance($class) {
if(!isset(self::$instances[$class])) {
self::$instances[$class] = new $class();
}
return self::$instances[$class];
}
}
class Core {
}
$core = Loader::instance('Core');
print_r($core);
或者你可以做得更简单:
<?php
function Load($class)
{
static $instances;
if(!isset($instances[$class]))
$instances[$class] = new $class();
return $instances[$class];
}
class Core {
}
$core = Load('Core');
print_r($core);