gpt4 book ai didi

php - PHP 特征中的依赖注入(inject)

转载 作者:可可西里 更新时间:2023-11-01 00:29:51 24 4
gpt4 key购买 nike

traits 真的可以和依赖注入(inject)一起工作吗?考虑以下代码:

特质等级

namespace Frame\Slick\Block;
use Frame\Slider\Slick\Block\Data as Helper

trait Slick
{
protected $_slickHelper;
public function __construct(Helper $slickHelper)
{
$this->_slickHelper = $slickHelper;
}
}

使用特征的类

namespace Frame\Slick\Block;

class Product ListProduct implements BlockInterface
{
use Slick;
public function testTrait()
{
return $this->_slickHelper->getHelloWorld();
}
}

这似乎总是返回 null,我非常确定所有内容都已正确包含。 trait 真的可以支持依赖注入(inject)吗?

最佳答案

是的,他们将 trait 中的代码“粘贴”到编译级别。考虑以下代码。它按预期工作并回显适当的值。你的问题在别处。

<?php
class Dependency
{
public function foo()
{
return 'test';
}
}

trait Slick
{
protected $dep;

public function __construct(Dependency $dep)
{
$this->dep = $dep;
}
}

class Product
{
use Slick;

public function testTrait()
{
return $this->dep->foo();
}
}

echo (new Product(new Dependency()))->testTrait();

代码将回显“测试”。 Working fiddle

关于php - PHP 特征中的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38877682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com