亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
注冊模式不理解,怎么就獲取到了db1了?

正在回答

1 回答

class?Register
{
????protected?static?$objects;

????//?將一個對象注冊到一個全局樹上
????static?function?set($alias,$object)
????{
????????self::$objects[$alias]?=?$object;
????}


????static?function?get($name)
????{
????????return?self::$objects[$name];
????}


????function?_unset($alias)
????{
????????unset(self::$objects[$alias]);
????}
}

在注冊器類中 $Object 是靜態屬性對吧,因此其生命周期等同全局變量的生命周期,程序結束后才會被銷毀。因此在你需要的地方這樣調用

$db?=?DataBase::getInstance();?//?DataBse對象

Register::set('db1',$db);?//?把對象$db注冊到全局樹上它的別名為db1

如果你是跟著Rango寫的使用的時候記得先調用一下工廠方法createDatabase()去獲取db對象,因為老師的注冊方法寫在工廠方法里的

namespace?IMooc;


class?Factory
{
????static?function?createDatabase()
????{
????????$db?=?DataBase::getInstance();

????????Register::set('db1',$db);

????????return?$db;
????}
}

你在入口文件index.php中,這樣來調用:

//?注冊樹模式?注意一般注冊對象會放在項目初始化的位置
$db?=?IMooc\Factory::createDatabase();

$db1?=?\IMooc\Register::get('db1');

var_dump($db1);

打印結果就不會是NULL啦

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號