gpt4 book ai didi

php - Symfony,getters 和 setters 与魔术方法

转载 作者:可可西里 更新时间:2023-10-31 22:55:43 28 4
gpt4 key购买 nike

我不喜欢为我的实体类的每个属性都使用“愚蠢的”getter 和 setter,因此我正在考虑使用魔术方法来获取/设置这些属性,而不是创建每个单独的 getter 和 setter。这个想法是在逻辑不同于典型的“return $name”或“$this->name=$name”时创建一个特定的 getter 或 setter。此外,这个神奇的方法将在不同的类上创建,每个实体都会扩展它(我没有想太多这一步)

无论如何,您如何看待用魔术方法替换 getters/setters?它会惩罚太多的表现吗?还有其他我没有考虑到的问题吗?

最佳答案

问题在于,例如symfony2 twig 的默认模板引擎需要这些方法。 Twig 将语句 {{ object.property }} 翻译成 $object->getProperty() 所以你必须调用 twig 中的属性而不是使用非常好的点符号像这样:{{ object.__get("property") }}

我知道doctrine also uses magic methods在它的实体管理器中。因此,当您对某个对象进行存储库查询时,您可以使用:

 $repository->findOneByProperty($value);

代替

$repository->findOneBy(array(
'property' => $value
));

我强烈建议您不要使用魔术方法,而是分别为每个属性使用 getset 方法。这也将使您能够更好地控制该属性的状态。

另外一定要结帐this Answer .它也几乎可以回答您的问题。

关于php - Symfony,getters 和 setters 与魔术方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18212870/

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