搜尋
首頁PHP 函式庫其它類別庫依賴注入容器的PHP庫
依賴注入容器的PHP庫
<?php
namespace Auryn;
class CachingReflector implements Reflector
{
    const CACHE_KEY_CLASSES = 'auryn.refls.classes.';
    const CACHE_KEY_CTORS = 'auryn.refls.ctors.';
    const CACHE_KEY_CTOR_PARAMS = 'auryn.refls.ctor-params.';
    const CACHE_KEY_FUNCS = 'auryn.refls.funcs.';
    const CACHE_KEY_METHODS = 'auryn.refls.methods.';
    private $reflector;
    private $cache;
    public function __construct(Reflector $reflector = null, ReflectionCache $cache = null)
    {
        $this->reflector = $reflector ?: new StandardReflector;
        $this->cache = $cache ?: new ReflectionCacheArray;
    }
    public function getClass($class)
    {
        $cacheKey = self::CACHE_KEY_CLASSES . strtolower($class);
        if (!$reflectionClass = $this->cache->fetch($cacheKey)) {
            $reflectionClass = new \ReflectionClass($class);
            $this->cache->store($cacheKey, $reflectionClass);
        }
        return $reflectionClass;
    }

我們的思路是應用程式用到一個Foo類,就會創建Foo類並調用Foo類的方法,假如這個方法內需要一個Bar類,就會創建Bar類並調用Bar類的方法,而這個方法內需要一個Bim類,就會創建Bim類,接著做些它工作。使用依賴注入的想法是應用程式用到Foo類,Foo類需要Bar類,Bar類需要Bim類,那麼先創建Bim類,再創建Bar類並把Bim注入,再創建Foo類,並把Bar類注入,再呼叫Foo方法,Foo呼叫Bar方法,接著做些它工作。這就是控制反轉模式。依賴關係的控制反轉到呼叫鏈的起點。這樣你可以完全控制依賴關係,透過調整不同的注入對象,來控製程式的行為。例如Foo類別用到了memcache,可以在不修改Foo類別程式碼的情況下,改用redis。

使用依賴注入容器後的思路是應用程式需要到Foo類,就從容器內取得Foo類,容器創建Bim類,再創建Bar類並把Bim注入,再創建Foo類,並把Bar注入,應用程式呼叫Foo方法,Foo呼叫Bar方法,接著做些它工作.總之容器負責實例化,注入依賴,處理依賴關係等工作。


免責聲明

本站所有資源皆由網友貢獻或各大下載網站轉載。請自行檢查軟體的完整性!本站所有資源僅供學習參考。請不要將它們用於商業目的。否則,一切後果都由您負責!如有侵權,請聯絡我們刪除。聯絡方式:admin@php.cn

相關文章

依賴注入:為什麼不只是注入容器?依賴注入:為什麼不只是注入容器?

28Jan2025

避免依賴性注入中的構造函數瘋狂,可能會遇到類似於以下的構造函數簽名:公眾...

PHP依賴注入容器性能基準測試PHP依賴注入容器性能基準測試

20Feb2025

關鍵要點 依賴注入容器(DIC)是在較大的PHP應用程序和框架中維護代碼庫的關鍵工具,但會影響性能。 PHP的一些眾所周知的DIC包括PHP-DI,Symfony \ depentencyIndostion,Ze

如何構建自己的依賴注入容器如何構建自己的依賴注入容器

15Feb2025

本文探討如何構建一個簡單的依賴注入容器(DI 容器)PHP 包。文中所有代碼,包括 PHPDoc 註解和單元測試(100% 代碼覆蓋率),都已上傳至 GitHub 倉庫,並在 Packagist 上列出。 關鍵要點: 構建 DI 容器有助於開發者理解依賴注入的基本原理和容器的工作機制。 DI 容器主要有兩個作用:“依賴注入”和“容器”。它需要能夠使用構造器注入或設置器注入方法來實例化和包含服務。 Symfony 依賴注入容器可作為創建自定義容器的參考。它將容器配置分為參數和服務,允許安全存儲

如何在 PHP 中從外部類別存取 MySQLi:透過依賴注入克服內部伺服器錯誤如何在 PHP 中從外部類別存取 MySQLi:透過依賴注入克服內部伺服器錯誤

28Oct2024

在 PHP 中從外部類別利用 ​​MySQL您從 PHP 5.6 到 7.0 的遷移以及相應的資料庫調整從 MySql 到 Mysqli...

使用 PHP 惰性物件建立 PSR 相容的依賴注入容器使用 PHP 惰性物件建立 PSR 相容的依賴注入容器

04Jan2025

在 PHP 8.4 中探索使用惰性物件的依賴注入 在現代 PHP 領域,8.4 版的發布引入了一項突破性的功能:惰性物件。這些物件提供了一種將初始化推遲到絕對必要的新方法

我應該如何存取應用程式中的 Unity 容器以進行正確的依賴項注入?我應該如何存取應用程式中的 Unity 容器以進行正確的依賴項注入?

29Dec2024

如何在應用程式中處理 Unity 容器存取當使用像 Unity 這樣的依賴注入框架時,請考慮如何...

See all articles