4 php uml enterprise-architect magic-methods getter-setter
我正在使用Enterprise Architect制作UML类图并用它生成PHP5代码.使用它,可以为属性创建getter和setter,在代码中看起来像这样(只显示相关的行):
private $id;
public function getId()
{
return $this->id;
}
/**
*
* @param newVal
*/
public function setId($newVal)
{
$this->id = $newVal;
}
Run Code Online (Sandbox Code Playgroud)
我想使用魔术方法__get($property)而__set($property, $value)不是每个属性的单独方法.是否可能,如果可能,怎么样?
对于getter来说,它看起来像这样:
public function __get($property)
{
switch ($property) {
case 'id': return $this->id; break;
default: return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我同意本页面上的其他人认为这是一种不好的做法,你应该坚持使用普通的老吸气剂和魔术方法.一旦您需要在访问器/更改器中进行验证或其他计算,您的开关/案例就会爆炸.这是一个混乱的维护,而不是完全友好的继承.使用魔术方法的子类在技术上会覆盖父级的魔法.
但是,您可以通过使用EA的代码模板编辑器修改代码模板来实现.
从代码模板上的Enterprise Architect用户指南引用:
代码模板使您可以自定义现有语言的代码生成.例如:
- 修改生成新文件时创建的文件头
- 更改生成的代码的样式(例如缩进或支撑位置)以匹配所需的编码标准
- 处理特定的构造型以生成诸如专用方法体和额外方法之类的东西.
并进一步:
Enterprise Architect的基本代码模板指定从UML元素到给定编程语言的各个部分的转换.模板以纯文本形式编写,其语法与标记语言和脚本语言的某些方面共享.
下面是代码编辑器的示例图片,其中加载了一些模板:

我不熟悉编辑器或他们使用的模板语言,所以我无法为您提供一个工作示例.但我想如果你真的想要修改模板,你可以从那里弄明白.
| 归档时间: |
|
| 查看次数: |
1994 次 |
| 最近记录: |