0

モジュール内に関数があります:

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

filename.php で、 $node 変数またはその他の変数にアクセスできるようにしたいと考えています。

<?php
var_dump($node);
?>

どうすればその応答を達成できますか。これどうやってやるの?

4

1 に答える 1

2

いいえ、 を使用してこれを行う方法はありませんmodule_load_include()php.netから:

インクルードが呼び出し元ファイル内の関数内で発生した場合、呼び出し先ファイルに含まれるすべてのコードは、その関数内で定義されているかのように動作します。したがって、その関数の変数スコープに従います。

インクルードは内部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';

また、アドバイス: 関数に機能をラップしないのは一般的に悪い考えです。関数を使用すると、変数のスコープが改善され、意図しない副作用が少なくなり、コードの再利用性が向上します。したがって、最初のオプションを選択することをお勧めします。

于 2012-11-21T00:58:02.177 に答える