PHP中是否允许自动加载类函数中的自动加载类?

时间:2016-08-04 10:59:39

标签: php drupal

我正在使用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,我想知道。

0 个答案:

没有答案