在laravel容器中所提到的resolved是什麼意思.

來源:互聯網
上載者:User
/** * An array of the types that have been resolved. * * @var array */protected $resolved = array();

在閱讀laravel源碼的時候看到的.
位於Illuminate\Container\Container.

請問這個resolved是用來標記對應類型名是否已被解析過嗎?

resolved在有道詞典中的翻譯.
adj. 下定決心的;已解決的;斷然的
v. 解決;決定;分解;轉變(resolve的過去分詞)

回複內容:

/** * An array of the types that have been resolved. * * @var array */protected $resolved = array();

在閱讀laravel源碼的時候看到的.
位於Illuminate\Container\Container.

請問這個resolved是用來標記對應類型名是否已被解析過嗎?

resolved在有道詞典中的翻譯.
adj. 下定決心的;已解決的;斷然的
v. 解決;決定;分解;轉變(resolve的過去分詞)

請問這個resolved是用來標記對應類型名是否已被解析過嗎?

是啊.

你跟蹤下這個變數.

public function make($abstract, $parameters = array()){    $abstract = $this->getAlias($abstract);    $this->resolved[$abstract] = true;

貌似這裡就是這個變數在整個架構唯一出現的地方了....

就是一個計數器,沒了.

View::make(...), App::make('foo')

$resolved = array('view'=>true,'foo'=>true);

估計為了方便debug而存在的?

我們知道,Laravel裡面存在著大量的Facade用法,比如你一開始寫的router,Router::get() ,你知道為啥可以這樣寫嗎?Router::get() 其實等價於$app->make('router')->get(); $app->make('router') 就是一個很形象的ioc容器, $app->make()就是容器,'router'就是放進去解析的類(的別名),$app->make('router') 就可以把 Route類的一個執行個體解析出來。

你可能要問,為啥要解析呢?解析是什麼意思呢?我New 一下那個類不就可以得到執行個體了嗎?首先,如果你把一個類綁定到Ioc的容器後,它可以自動幫你產生執行個體,不用include,不用new。其次new 一個類不能直接幫你解析出它依賴的類,特別是介面類,用new的方法你需要先用new建立執行個體,然後再傳入這個類依賴的執行個體(意味著有更多的new)。

詳細請看:Service Container(IOC容器)

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.