laravel的container中有個shared機制。
他的意義是什麼。
我們看下他的原始碼。
滿足shared 只要滿足兩個條件中的任意一個
1.instances陣列中存在,說明這個陣列中的所有資料都是shard。我們通過名字就知道儲存的是例項化的物件。
2.或者,還未例項化,但是已經繫結在陣列bindings中並且引數shard == true的類。
public function isShared($abstract)
{
return isset($this->instances[$abstract]) ||
(isset($this->bindings[$abstract]['shared']) &&
$this->bindings[$abstract]['shared'] === true);
}
總結
通過shard我們知道,Share就是一個標記。
1.instances 這個例項化的陣列中都是shared的。
2.未例項化但是已經繫結的陣列binging中要註明shard是true他才是shard的。
shard我猜想首先可以用作單例,和其他類共享單個例項,直接從instance中獲取便可以了,總的來說就是一個標記。
本作品採用《CC 協議》,轉載必須註明作者和本文連結