在SugarCRM中,您可以创建自定义模块(例如MyModule),并将它们保存在/模块中,就像股票对象一样,具有任何默认元数据,视图,语言文件等。模块MyModule的,你可能有这样的:
/modules/MyModule/MyModule.class.php
/modules/MyModule/MyModule.php
/modules/MyModule/language/
/modules/MyModule/metadata
等等,让一切是很好的定义,所有的模块都放在一起。
<?php
$beanList['MyModule'] = 'MyModule';
$beanFiles['MyModule'] = 'modules/MyModule/MyModule.php';
$moduleList[] = 'MyModule';
显然$beanFiles
数组引用在这里我们可以找到基本模块的类,通常SugarBean对象的扩展:该模块就成为该系统由诸如/custom/Extension/application/Include/MyModule.php
文件,内容类似于注册。最近我被告知,我们可以为了定制而调整文件的位置,并且它在一定程度上是有意义的。如果将它设置为$beanFiles['MyModule'] = 'custom/modules/MyModule/MyModule.php';
,则允许我们通过模块加载器访问基类,即使安全扫描工具可防止核心文件更改,也可能导致我们无法完全扩展,而是替换库存模块(如帐户或调用),而无需修改核心文件并通过系统升级消除更改。
所以这里是我的问题:这里的最佳做法是什么?我一直在SugarCRM工作很多年,这是我第一次试图修改$beanFiles
阵列。我担心的是我偏离了这里的最佳实践,并且不知何故文件modules/MyModule/MyModule.php
和custom/modules/MyModule/MyModule.php
都可能被加载,这将导致PHP中的类名冲突(即,因为两个类都被命名为MyModule ...)。很明显,任何对类的引用都需要更新(例如,与这个模块一起工作的入口点),但是我错过了任何潜在的后果吗?