1.4 - Laravel 5.6 - Share 機制

HarveyNorman發表於2020-03-05

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 協議》,轉載必須註明作者和本文連結

相關文章