我的模块中有一个函数:
<?php
function foo($node) {
module_load_include('php', 'mymodule', 'path/to/filename');
}
?>
在 filename.php 中,我希望能够访问 $node 变量或任何其他变量。
<?php
var_dump($node);
?>
我怎样才能做到这一点。你怎么做到这一点?
不,没有办法使用module_load_include()
. 来自php.net:
如果包含出现在调用文件中的函数内部,则被调用文件中包含的所有代码的行为就好像它已在该函数中定义一样。因此,它将遵循该函数的变量范围。
由于包含发生在内部module_load_include()
,因此包含文件将包含该函数范围内的所有变量,而不是您的函数。
您可以:
foo()
在使用module_load_include()
.module_load_include()
:include DRUPAL_ROOT . '/' . drupal_get_path('module', 'mymodule') . '/path/to/filename.php';
另外,提一句建议:不将功能包装在函数中通常是个坏主意。使用函数时,您可以获得更好的变量作用域、更少的意外副作用和更好的代码可重用性。所以,我建议你选择第一个选项。