ホームページ >バックエンド開発 >PHPチュートリアル >PHPでクラスプロパティに匿名関数を割り当てるにはどうすればよいですか?
PHP でのクラス プロパティへの匿名関数の割り当て
PHP では、次の場合にクラス プロパティを匿名関数に直接初期化することはできません。それを宣言しているのです。以下のコード スニペット:
<code class="php">class AssignAnonFunction { private $someFunc = function() { echo "Will Not work"; }; }</code>
エラー メッセージ「解析エラー: 構文エラー、予期しない T_FUNCTION」が生成されます。これは、PHP 言語では、宣言フェーズ中に関数を使用してプロパティを初期化することが許可されていないためです。
定数値初期化の制限
PHP マニュアルによると、クラス プロパティ宣言時に定数値でのみ初期化できます。定数値とは、実行時の情報に依存せずにコンパイル時に評価できる値です。ただし、関数はこの基準に適合しないため、宣言中にプロパティ初期化子として許可されません。
コンストラクターを使用した回避策
匿名関数でプロパティを初期化できないにもかかわらず宣言中に、コンストラクター メソッド内のプロパティに関数を割り当てることができます。前のコードを次のように変更すると、代入が可能になります:
<code class="php">class AssignAnonFunctionInConstructor { private $someFunc; public function __construct() { $this->someFunc = function() { echo "Does Work"; }; } }</code>
オブジェクトの作成時にコンストラクター メソッドが呼び出され、実行時に匿名関数をプロパティに代入できるようになります。
以上がPHPでクラスプロパティに匿名関数を割り当てるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。