0

私はこの特性を持っています

use Pimple\Container;

trait ContainerAwareTrait
{
    protected $container;

    public function setContainer(Container $container = null)
    {
        if (null !== $this->container) {
            $this->container = $container;
        }
    }

    public function getContainer()
    {
        return $this->container;
    }
}

このコードを使用しています(Appクラスを介して)

$container = new Pimple\Container();
$app = new App($container); // uses ContainerAwareTrait, constructor calls `setContainer`
var_dump($app->getContainer(), $container);die;

私が見ているのは、最初のvar_dump結果がarrayであり、2 番目の結果が のインスタンスであることPimple\Containerです。

私はそれらが両方とも同じインスタンスであることを期待していました。誰かがここで何が起こっているのか教えてもらえますか?

4

1 に答える 1

0

セッターのロジックが間違っています。既に設定されている場合this->container(is ) ではなく、設定されていない場合 (is ) に設定する必要があります。nullnot null

于 2015-05-17T15:01:25.553 に答える