我正在使用Drupal 7,我正在使用我的自定义模块的.info文件以及" files [] = ...."指令允许在需要时自动加载我的类。每个类只包含静态公共函数,当从一般范围的函数调用这些函数时,一切都运行良好。
工作示例: 如果我去/ devel / php并调用函数ClassTwo :: getValue(),一切都会执行而不会出错。
错误示例: 如果我从另一个自动加载的函数ClassOne :: generate()中调用函数ClassTwo :: getValue(),则抛出类ClassTwo()不存在的异常。如果我特意包含包含ClassTwo类的文件,则会解决该错误。
我不相信它与Drupal的自动加载机制有关。我的方案是否允许在PHP 5.3中使用?
为了更好地说明,我在下面添加了示例代码。这是我能为工作代码提供的最接近的。
MyModule的/ mymodule.info
name = "MyModule"
core = "7.x"
files[] = "includes/plugins/ClassOne.inc"
files[] = "includes/plugins/ClassTwo.inc"
MyModule的/ mymodule.module
function mymodule_page_callback() {
return ClassOne::generate();
}
MyModule的/包括/插件/ ClassOne.inc
Class ClassOne {
static public function generate() {
$value = ClassTwo::getValue();
// Process $value
return $value;
}
}
MyModule的/包括/插件/ ClassTwo.inc
Class ClassTwo {
static public function getValue() {
// Somehow retrieve the value.
return $value;
}
}
更新:使用Drupal的xautoload模块和PSR-4一切都非常好,我已经转向这种方法作为解决方案。如果有人有答案,除了PSR-0 / PSR-4,我想知道。