0

タイトルが少しわかりにくいかもしれませんので、説明させていただきます。クラスとメソッドがあります。そのメソッド自体に機能があること。このような:

class MyClass {
   public static function my_function($param) {
      function nested_function() {
        //do something with $param
      }
   }
}

だから私の質問は、どうすればアクセスできます$paramnested_function

編集

私がこれをしている理由は、ワードプレスのことのためです。私はこのようなものが必要です:

class MyClass {
   public static function my_function($param) {
      function nested_function() {
        //do something with $param
      }

      add_action('init', 'nested_function');
   }
}
4

1 に答える 1

4

これは賢明なことではありません。PHPの名前付き関数はすべてグローバルです。それらを他の何かの中にネストすると、宣言が条件付きになります。nested_functionつまり、電話をかけるまで電話をかけることはできませんMyClass::my_functionMyClass::my_functionその後、PHPは既存の関数を再宣言しようとするため、再度呼び出すことはできません。

親スコープの変数を含めることができるクロージャ、つまり無名関数が必要な場合があります。

public static function my_function($param) {
    $nested_function = function () use ($param) {
        //do something with $param
    };
}
于 2012-09-12T13:09:04.873 に答える