PHP 7以降では、コンストラクターと同じ方法をクラス名と同じように使用すると、時代遅れと見なされます。この使用法は合法であり、PHPの古いバージョンでは一般的ですが、一貫性と保守性を向上させるために、言語の開発により、PHPのオフィシャルはこの執筆方法を推奨しなくなりました。
PHP 5以前のPHPで、開発者は通常、クラス名と同じようにコンストラクターを定義します。たとえば、:
class MyClass {
function MyClass() {
// コンストラクターロジック
}
}
ただし、PHP 7以降、この方法は次の警告をトリガーします。
非推奨:クラスと同じ名前のメソッドはコンストラクターではありません
これは、コードがまだ実行されている間、将来のバージョンがこの構文を完全に削除する可能性があるため、すぐに調整することをお勧めします。
上記の警告を解決するために、実際のプロジェクトの状況に従って次の方法を選択できます。
最も直接的な方法は、コンストラクター名をPHPの事前定義された__construct()メソッドに変更することです。例は次のとおりです。
class MyClass {
function __construct() {
// コンストラクターロジック
}
}
このメソッドは、サポートされているすべてのPHPバージョンで機能し、推奨される標準慣行です。
古いプロジェクト環境と互換性がある必要がある場合は、適切なコンストラクターの実装を選択するために、 version_compare関数を使用してPHPバージョンの判断を下すことができます。
class MyClass {
function MyClass() {
if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
// PHP 7上記のバージョンのロジック
} else {
// PHP 7ロジックの次のバージョン
}
}
}
ただし、このソリューションはメンテナンスでの使用により適しており、新しいプロジェクトにはお勧めしません。
もう1つの非公式な方法は、PHPDOCアノテーションを通じてコンストラクターの目的を特定することです。
class MyClass {
/**
* MyClass constructor.
*/
function MyClass() {
// コンストラクターロジック
}
}
このプラクティスは、読みやすさをコードするのに役立ちますが、PHPインタープリターからの警告を排除することはなく、チームの内部識別にのみ適用されます。
非推奨からプロンプトに直面する:クラスと同じ名前のメソッドはコンストラクターではありません。開発者は、プロジェクトの互換性とメンテナンスコストに基づいて次の方法を選択する必要があります。
プロジェクト内のすべてのコンストラクターをできるだけ早く__construct()形式に統合して、コードの品質を改善し、将来の互換性の問題を回避することをお勧めします。