スリムの依存性注入はニキビに基づいているので、もう一度ニキビを学びに行きました。以前に書いた依存性注入クラスと比較すると、pimple は
$container->session_storage = function ($c) { return new $c['session_storage_class']($c['cookie_name']); };
を使用する代わりに、配列に注入されます。 ソース コードを見てみると、そのトリックは次のとおりです。 php5 によって提供される ArrayAccess インターフェイス。
正式な定義: 配列にアクセスするなど、オブジェクトにアクセスする機能を提供するインターフェイス。このインターフェースは主に 4 つの抽象メソッドを定義します:
$container['session_storage'] = function ($c) { return new $c['session_storage_class']($c['cookie_name']); };
を PHP arrayのように使用したい場合は、ArrayAccess インターフェースを実装する必要があります コードは次のとおりです:
abstract public boolean offsetExists ( mixed $offset ) #检查数据是否存在 abstract public mixed offsetGet ( mixed $offset ) #获取数据 abstract public void offsetSet ( mixed $offset , mixed $value ) #设置数据 abstract public void offsetUnset ( mixed $offset ) #删除数据
次の例は、このインターフェイスの使用方法を示しています。この例は完全ではありませんが、理解するには十分です。:->
コードは次のとおりです。
interface ArrayAccess boolean offsetExists($index) mixed offsetGet($index) void offsetSet($index, $newvalue) void offsetUnset($index)
実際、$userMap['John' ] 検索が実行されると、PHP は offsetGet() メソッドを呼び出し、そこからデータベース関連の getUserId() メソッドが呼び出されます。
以上がPHP での ArrayAccess インターフェイスの詳細なコード説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。