我已经导入了PHP源文件夹为企业架构师。 现在,我想看到的任何具体类的继承链。 换句话说,我希望看到一个大图显示类的所有关系。 大多数类是在文件夹从父/子级分离。 我怎样才能做到这一点..?
这是我的原因,安装的企业架构师:我得到一个漫长和支继承链中的困惑。 这将是非常令人失望的,如果这样一个强大的工具,识别所有的关系无法给出这些关系的概述。
例如,我可以看到在一个文件夹的根类图,示出了聚集。 然而,上市聚合类是只有那些位于同一文件夹作为父类。
先感谢您。
我已经导入了PHP源文件夹为企业架构师。 现在,我想看到的任何具体类的继承链。 换句话说,我希望看到一个大图显示类的所有关系。 大多数类是在文件夹从父/子级分离。 我怎样才能做到这一点..?
这是我的原因,安装的企业架构师:我得到一个漫长和支继承链中的困惑。 这将是非常令人失望的,如果这样一个强大的工具,识别所有的关系无法给出这些关系的概述。
例如,我可以看到在一个文件夹的根类图,示出了聚集。 然而,上市聚合类是只有那些位于同一文件夹作为父类。
先感谢您。
这个答案适用于EA 9.3。 我没有旧的EA 8躺在附近,但EA绝对有向后兼容的,所以你应该在任何情况下,升级。
有一对夫妇的方式来遵循EA继承链。
方法1:添加类到同一图。
在包含根类的继承层次图,右键单击根类,然后选择添加 - 相关的元素。 在“插入相关元素”对话框中,选择您想要的链长度(“等级”),最多的5.指定“链接式”推广。 您可以将其他选项,因为他们,或者如果你喜欢玩他们。
这将导致EA那些类添加到从所述根类继承在高达5步/水平的图。 你不必从根类开始; 选项“链接方向”,在对话框控制关系是否应遵循的一个或两个方向。
您可以使用此相同功能的添加通过其他关系,如聚合相关的类。
方法2:使用可追溯性窗口。
在主菜单中,选择查看 - 可追溯性。 这将打开可追溯性窗口,这是一个树视图在顶部选定元素的currenty,和节点用于在层级中的所有相关的元素。
选择根类和中提琴,其所有的继承类显示有追踪窗口的子节点,并且可以扩展他们又跟随链进一步。
方法1放入图中,它被保留,需要更新的信息。 方法2是动态的,更usefu当你需要检查特定关系链。
图中的关系,如果底层模型的变化而自动更新,因此如果比如你改变代码并重新导入,这将在图中得到体现。 为了安全起见,始终以手动创建的图表中从源包的单独包装工作。
我不知道是否有现有的解决方案,但是你可以很容易地实现使用ReflectionClass
和谷歌图
例
class A {
}
class B extends A {
}
class C extends B {
}
class D extends C {
}
class E extends D {
}
class F extends E {
}
function getPath($className) {
$class = new ReflectionClass($className);
$name = $class->getParentClass();
if ($name) {
echo $class->getName(), " extends ";
getPath($name->getName());
} else {
echo $class->getName();
}
}
getPath("C");
getPath("F");
产量
C extends B extends A
F extends E extends D extends C extends B extends A