匿名関数によるプロパティの初期化: なぜ、どのように?
以下のコード スニペットで説明したように、匿名関数を使用してプロパティを初期化する場合、クラス宣言により、PHP で「解析エラー: 構文エラー、予期しない T_FUNCTION」が発生します。ただし、2 番目のスニペットで示されているように、コンストラクター内のプロパティに関数を割り当てることは可能です。
// Property initialization with anonymous function error
class AssignAnonFunction {
private $someFunc = function() {
echo "Will Not work";
};
}
// Property initialization in constructor
class AssignAnonFunctionInConstructor {
private $someFunc;
public function __construct() {
$this->someFunc = function() {
echo "Does Work";
};
}
}
匿名関数を使用してプロパティを直接初期化できないのは、PHP の実装に起因します。プロパティはコンパイル中に評価可能な定数値で初期化する必要があり、関数はこの基準を満たしていません。
この制限にもかかわらず、PHP ではコンストラクター内のプロパティに関数を割り当てることができます。これは、コンストラクターが実行時に実行され、動的な割り当てが可能になるためです。
この回避策は柔軟性を提供しますが、匿名関数による直接プロパティの初期化ができないことが、特定のシナリオでは欠点になる可能性があります。追加のコードが必要となり、コードの可読性に影響を与える可能性があります。
PHP でのこの設計決定の理由はまだ推測の域を出ませんが、考えられる説明としては、このような機能の実装の複雑さ、その機能に対する需要の不足などが挙げられます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3