我正在使用enterprise architect制作一个uml类图,并用它生成php5代码。使用this,可以为一个属性创建getter和setter,这在代码中是这样的(只显示了相关的行):
private $id;
public function getId()
{
return $this->id;
}
/**
*
* @param newVal
*/
public function setId($newVal)
{
$this->id = $newVal;
}
我想使用magic方法
__get($property)
和__set($property, $value)
来代替每个属性的单独方法。有可能吗?如果有,怎么办?可能看起来是这样的,让人印象深刻的是:
public function __get($property)
{
switch ($property) {
case 'id': return $this->id; break;
default: return null;
}
}
最佳答案
我同意其他人在这一页上说,这是坏的做法,你应该坚持朴素的老getter和setter超过魔术方法。一旦你需要在访问器/变异器中进行验证或其他计算,你的开关/案例就会爆炸。这是一个混乱的维护和不完全继承友好。具有magic方法的子类在技术上重写父类的magic方法。
但是,您可以使用ea的代码模板编辑器修改代码模板。
引用自Enterprise Architect User Guide on Code Templates:
代码模板允许您自定义现有语言的代码生成。例如:
修改生成新文件时创建的文件头
更改生成代码的样式(例如缩进或大括号位置)以匹配所需的编码标准
处理特定的构造型以生成专门的方法体和额外的方法。
进一步:
企业架构师的基本代码模板指定从UML元素到给定编程语言的各个部分的转换。模板是以纯文本形式编写的,其语法与标记语言和脚本语言有一些共同之处。
下面是代码编辑器的示例图片,其中加载了一些模板:
我不熟悉编辑器,也不熟悉它们使用的模板语言,因此我无法为您提供一个工作示例。但是如果你真的想修改模板的话,我想你可以从那里找到答案。