## 変更履歴

PHP 5 の OOP モデルの変更履歴をここに記録します。 個々の機能の説明や注意点については、クラスとオブジェクトに関するドキュメントを参照ください。

バージョン | 説明
--- | ---
7.0.0 | Defining (compatible) properties in two used traits no longer triggers an error.
5.6.0 | 追加: __debugInfo() メソッド。
5.5.0 | 追加: ::class マジック定数。
5.5.0 | 追加: 例外処理に finally。
5.4.0 | 追加: トレイト が追加されました。
5.4.0 | 変更: 抽象クラスでコンストラクタのシグネチャを定義している場合は、 そのシグネチャに従うことが必須となりました。
5.3.3 | 変更: 名前空間 つきのクラス名の最後の部分と同じ名前のメソッドは、コンストラクタ とはみなされなくなりました。 名前空間を使っていないクラスは今までと変わりません。
5.3.0 | 変更: プロトタイプでデフォルト値を指定したメソッドをもつインターフェイスを 実装したクラスを作るときに、実装側でのデフォルト値を インターフェイスのデフォルト値と一致させなくてもよくなりました。
5.3.0 | 変更: 変数を使ってクラスを参照することができるようになりました (例: echo $classname::constant;)。 この変数の値に、キーワード (self や parent、static など) を使うことはできません。
5.3.0 | 変更: オーバーロード メソッドが static 宣言されている場合に `E_WARNING` レベルのエラーが発生するようになりました。 また、public 宣言することが必須となりました。
5.3.0 | 変更: 5.3.0 より前のバージョンでは、 __autoload() 関数の中で発生した例外を catch ブロックで捕捉することができず、 致命的なエラーとなっていました。このバージョンからは __autoload 関数内で発生した例外を catch ブロックで捕捉できるようになりましたが、ひとつ条件があります。 独自の例外クラスをスローする場合は、その例外クラスが使用可能でなければなりません。 __autoload 関数は、再帰的に呼び出されて独自の例外クラスを読み込もうとする可能性があります。
5.3.0 | 追加: __callStatic メソッド。
5.3.0 | 追加: ヒアドキュメント および nowdoc の、クラス定数やプロパティの定義での使用。 注意: ヒアドキュメントの値は、ダブルクォートで囲んだ文字列と同じ規則に従わなければなりません (その中で変数を使えないなど)。
5.3.0 | 追加: 遅延静的束縛。
5.3.0 | 追加: __invoke() メソッド。
5.2.0 | 変更: __toString() メソッドがコールされるのは echo や print と直接組み合わせて使った場合のみでした。このバージョンからは、任意の文字列コンテキスト (printf() で %s 修飾子を使った場合など) でコールされるようになりました。ただし、他の型のコンテキスト (%d 修飾子を使った場合など) は除きます。 PHP 5.2.0 以降は、__toString メソッドを持たないオブジェクトを文字列に変換しようとすると `E_RECOVERABLE_ERROR` レベルのエラーが発生します。
5.1.3 | 変更: PHP 5 の初期のバージョンでは var を使うことが非推奨とされており、`E_STRICT` レベルのエラーが発生していました。 このバージョンからは非推奨ではなくなり、エラーが発生しなくなりました。
5.1.0 | 変更: __set_state() メソッドが、 var_export() でエクスポートしたクラスに対してもコールされるようになりました。
5.1.0 | 追加: __isset() メソッドおよび __unset() メソッド。