読者です 読者をやめる 読者になる 読者になる

やったーphpで動く俺俺DIコンテナできたよー\(^o^)/その2

その1とはまったく別に作ったもの。
xml設定ファイルで無しにコードで直接インジェクションが書けるDIコンテナ
オブジェクトを生成するコンポーネントをコードで書けるのでやりたい放題できます。

sample1.php

<?php
// もっともシンプルな形

include( 'DIContainer.php');

class SimpleHuman
{
    public $name;
    public $age;
}

class HumanComponent extends ObjectComponent
{
    // getObject( 'human')で、このメソッドは呼び出される
    public function &fetch( ObjectFetcher &$of)
    {
        $object = new SimpleHuman();
        $object->name = 'human';
        $object->age = 23;
        
        return $object;
    }
}

$dicon =& DIContainer::singleton( array( 'human'));

$human =& $dicon->getObject( 'human');
echo "My name is {$human->name}.\n";
echo "Im {$human->age}.\n";

上記のコードの実行結果

My name is human.
Im 23.

ソース

Ore2DIContainer2.zip
いくつかサンプルコードが入ってます。