【发布时间】:2019-04-29 06:12:15
【问题描述】:
我想装饰一个教义2集合并使用symfony4。
所以我有一个实体
class Entry
{
protected $title;
public function getTitle(): ?string
{
return $this->title;
}
}
还有一个装饰器:
class EntryDecorator
{
protected $entry;
public function __construct(Entry $entry)
{
$this->entry = $entry;
}
public function getTitle()
{
return '----'; // just for testing ;-)
}
}
在我的控制器中,我使用以下方法从数据库中加载完整条目:
$entries = $this->entryRepository->findAll()
我的观点很简单:
{% for entry in entries %}
{{ entry.getTitle }}
{% endfor %}
所以,现在我想装饰整个系列。
在 SF4 中,我发现 How to Decorate Services 看起来不错,但这不适用于这种情况。
因为:学说返回一个不可变的集合(请参阅此主题Immutable collections in Doctrine 2?)
所以我认为这样就可以了:
array_walk($entries, function($entry) {
return new EntryDecorator($entry);
});
但是不起作用,因为集合是不可变的。
现在我有以下工作:
$entries = [];
foreach($this->entryRepository->findAll() as $entry) {
$entries[] = new EntryDecorator($entry);
}
但是看起来嗯,好吧。
所以我的问题是: 有没有更好的方法来装饰学说收藏?
更新:
目前,我为此使用array_map()。
array_map(function ($entry) {
$decorator = new EntryDecorator($entry);
return $decorator;
}, $entries);
【问题讨论】:
标签: php symfony doctrine decorator symfony4