0

Drupal には、hook_functionname1、hook_functionname2 という多くの関数があります。モジュールを作成するときは、テキスト「フック」をモジュール名に置き換える必要があるため、Drupal はモジュール「my_drupal_module」をロードし、「my_drupal_module_functionname1」や「my_drupal_module_functionname2」などのフックを実行します。

PHP で DEFINE を使用して「フック」という単語を単純に定義し、それを文字列に設定することは可能ですか? 可能であれば、hook_anything を単語ごとにコピーして貼り付けることができ、変更する必要はありません。また、モジュールの名前を変更したい場合は、すべての関数名を検索/置換するのではなく、単一の定数を変更するだけです。

では、DEFINE またはその他の設定を使用して、PHP でメタプログラミングを行うことはできますか?

4

3 に答える 3

2

次のようなものが必要です。

$moduleFunctionName = 'hook';

$functionNameOne = $moduleFunctionName . '_functionname1';
$functionNameTwo = $moduleFunctionName . '_functionname2';

$functionNameOne = function($var) {
 // blah
}
..//

関数 $functionNameOne は無名関数によって定義されます。php 5.3.0からphpで利用可能になりました

于 2013-10-17T20:01:56.457 に答える