web-dev-qa-db-ja.com

SameAsClassName()コンストラクターがPHP7で廃止されたのはなぜですか?

PHP5マニュアル によると、__construct()はPHP5でSameAsClassName()コンストラクターの代わりとして導入され、PHP7以降、古いスタイルは非推奨としてマークされているため、将来のバージョンでは、SameAsClassName()は許可されなくなります。

私はこの決定の根拠について疑問に思っています。マニュアルには、その変更の理由は記載されていません。 __construct()とSameAsClassName()を使用する利点は何ですか?

補足:約2000のクラスがあるコードベースでは、この変更により、すべてのクラスの名前を手動で__constructに変更する必要が生じます。

4
user1179459

この変更は、特別な機能と通常の機能を区別するためのより大きなスキームの一部であった可能性があります。リンクした同じページで、特別な関数__destruct以前は類似物がありませんでした。

クラスと同じ名前の関数のイディオムは、コンストラクターがJava/C++/C#の外で過度に広がっていないことです。

これらの理由を組み合わせれば、言語のそのメジャーリリースでのクラスシステムのオーバーホールを保証するのに十分だった可能性があります。

名前はおそらく二重下線__は、Python、C、C++などの言語での実装または言語の詳細に一般的に使用されます。

決定的な回答が必要な場合は、リストのアーカイブを調べて、それがプライベートでも直接でも議論されなかったことを願ってください。

3
Lars Viklund