2012-11-20 33 views
0

我有我的模塊中的功能:Drupal如何使用module_load_include將變量傳遞給文件?

<?php 
function foo($node) { 
module_load_include('php', 'mymodule', 'path/to/filename'); 
} 
?> 

在filename.php我想能夠訪問$節點變量,或任何其他。

<?php 
var_dump($node); 
?> 

我該如何實現這一目標。你怎麼做到這一點?

回答

2

不,沒有辦法使用module_load_include()來做到這一點。從php.net

如果include出現於調用文件中的一個函數裏,那麼所有包含在調用的文件的行爲的代碼,就好像它已經在該函數內部定義。所以,它將遵循該函數的變量範圍。

由於include包含在module_load_include()的內部,因此包含文件將包含該函數範圍內的所有變量,而不是函數。

您可以:

  1. 添加一個功能你的包含文件中,然後調用該函數的功能foo()內使用module_load_include()後。
  2. 使用常規PHP包括代替module_load_include()include DRUPAL_ROOT . '/' . drupal_get_path('module', 'mymodule') . '/path/to/filename.php';

而且,一個忠告:它一般是一個壞主意,在功能不換行功能。當你使用函數時,你會得到更好的變量範圍,更少的無意的副作用以及更好的代碼可重用性。所以,我建議你選擇第一個選項。