|
-
定数とstatic宣言の導入
constをつけることで、定数を定義できるようになりました。
定数の名前には$をつける必要はありません。
また、クラス変数にはstaticをつけることで、
インスタンスを1つも生成しない状態でも、クラス変数の初期化ができるようになりました。
-
オブジェクト変数代入は参照
オブジェクトを変数から変数に代入する際、デフォルトが今までの値渡しから参照渡しになりました。
値渡しをする、つまりオブジェクトのコピーを渡すには、__clone()メソッドを使います。
-
例外処理
Javaによく似たthrow-try-catchキーワードを使って、
例外を投げたり、捕捉したりできるようになりました。
try {
throw new AppException('unexpected');
} catch (AppException $ex) {
$ex->display();
}
|
catch節には、Javaと同じように、例外オブジェクトのクラス名を指定する必要があります。
-
メソッド、インスタンス変数へのアクセス指示子の導入
クラスのメソッドやインスタンス変数を定義する際に、
「public」「protected」「private」のアクセス指示子をつけることができるようになりました。
意味はJavaのそれらと全く同じです。
また、派生クラスでのオーバーライドを禁止する「final」も導入されました。
-
インターフェースとabstract修飾子の導入
Javaと同じ意味のインターフェースを定義できるようになりました。
また、Javaと全く同じ意味の、abstract修飾子を、クラスの定義(classの前)
とメソッドの定義につけることができるようになりました。
-
名前空間(namespace)
namespaceでコードを囲むと、名前空間を定義でき、
モジュール同士の変数名、クラス名などの衝突を防ぐことができるようになりました。
但し、名前空間のネストはできません。
-
コンストラクタとデストラクタ
コンストラクタは「__construct()」、デストラクタは「__destruct()」
という名前で定義するように変更されました。
これはJavaやC++により「似ていない」仕様への改変なので注意が必要です。
こうなってしまう理由のひとつが、PHPにはsuperがないためです。
PHP4でサポートしていた、クラス名と同じ名前のメソッドをコンストラクタとして呼び出す仕組みも、
__construct()より優先度は下ですが引き続き使えます。
PHP4にはデストラクタはありませんでした。
-
XMLとSOAPの機能強化
PHPと同じくオープンソースのlibxml2をライブラリに採用し、XML関連の処理は書き直されました。
またSimpleXMLと呼ばれる直感的なAPIが導入されました。
また、Webサービスへの透過性を確保するため、SOAP関連の関数がビルトインで追加されています。
-
MySQLi API
MySQL 4.1以降の準備文(prepared statement)などの新機能に対応した新しいMySQL API、
MySQLiが用意されました。
-
SQLiteのバンドル
SQL92準拠の軽量なRDBMS、SQLiteがバンドルされるようになりました。
(first uploaded 2004/07/17 last updated 2004/07/17, URANO398)
|