[英]Can I put a non-static object in a static property?
我可以這樣做嗎?
class A {
public function foo() { echo "whatever";}
}
class B {
static public $var;
static function initVar($var) { self::$var = $var; }
static public function bar() { return self::$var->foo(); }
}
class C {
public function baz() {
$a = new A();
B::initVar($a);
echo B::bar(); // should print "whatever"
}
}
如果不是,是否有任何方法可以使用靜態方法訪問給定的對象實例?
是的你可以。 通常這是實現Singleton(僅應實例化對象的一種模式)的方式。 雖然這種模式被認為是糟糕的...
http://en.wikipedia.org/wiki/Singleton_pattern
示例(盡管在同一個類中...):
class A
{
private static $inst;
public static function instance()
{
if (self::$inst === NULL)
{
self::$inst = new A();
}
return self::$inst;
}
/* constructor etc */
}
$a = A::instance();
$a->someMethod();
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.