module_load_include()vs require_once

Fre*_*ric 6 php drupal code-structure

我想知道什么时候需要使用module_load_include()require_once包含位于模块中的文件.

Spu*_*ley 13

Drupal module_load_include()函数在标准PHP之上做的关键require_once是它在使用时定位文件时引用模块的路径drupal_get_path().

如果你要使用require_once,你必须自己做这个.

它做的另一件事是在尝试包含文件之前检查文件是否存在,这对于避免致命崩溃很方便,但是当你试图调用你试图包含的函数时,无论如何都要获得一个文件是毫无意义的.这很方便,但允许您产生更有意义的错误.

在一天结束时module_load_include(),Drupal提供的实用功能实际上只是为了让事情变得更容易.如果您知道文件的位置,并且您知道它存在于那里,则几乎不需要使用Drupal函数; 你也可以使用require_once.

  • @Spudley的相对路径始终从最初请求的文件开始,即index.php.要实际包含您自己模块中的文件,您必须使用dirname(\ __ FILE__)之类的技巧来获取.module文件的位置. (5认同)
  • 为了使说明更明确,您的模块可以安装在sites/all/modules /,sites/all/modules/contrib /,sites/site.com/modules等中.module_load_include()将知道模块的安装位置和使用方法正确的道路. (2认同)