PHP4→PHP5の変更点まとめ

投稿者 おおかゆか 2009-02-05 15:53:00 GMT

PHPはバージョン5が主流になってからは全く触ってなくて、これからはRubyだけでいいやと考えていたのだが、どうもそういうわけにはいかなそうな事態になってきたので今更ながら5を勉強することにした。
いくつか参考になりそうなサイトを巡回したのだが、それらを読んだだけではすぐに忘れてしまいそうなので、自分なりにまとめたものをここに書いておく。

クラスとオブジェクト

コンストラクタは __construct() で定義する。PHP4のクラス名と同じメソッドを定義するやり方も下位互換性のために残されてある。

デストラクタは __destruct() で定義する。

コンストラクタとデストラクタは、子クラスにおいて親クラスのものは自動的に実行されない。実行したい場合は明示的に parent::__construct()parent::__destruct() をコールする。

privateprotected 属性が追加。明示しない場合は public になる。

static 宣言により、クラスメンバー変数やクラスメソッドを定義できる。

const 宣言により、クラス内にオブジェクト定数を定義できる。

abstract 宣言による抽象化が可能に。クラスとメソッドに適用可。

interface 宣言でインターフェイスが定義可能。クラス実装時には extends ではなく implements を使う。

final 修飾が可能に。これによりクラスとメソッドの上書きを禁止できる。

instanceof 演算子を使うことで、特定のクラスやインターフェイスのオブジェクトかどうか検証できる。

マジックメソッドいろいろ
  __sleep() … インスタンスがserialize()にかけられたときに最初に実行される
  __wakeup() … シリアライズされたインスタンスがunserialize()にかけられたときに最初に実行される
  __toString() … クラスが文字列として扱われた場合に呼ばれる

オブジェクトのコピーは clone を使う。オブジェクトの代入はデフォルトが参照渡しになった。(※やっとまともになった

オブジェクトの比較演算子。「==」は別のインスタンスだが同じクラスのインスタンスで値も同じ、「===」はアドレスを共有する同じインスタンス。(※意味わからん

例外

キャッチする場合は

try {
} catch (Exception e) {
}

※Rubyの else みたいのはないので、キャッチし損なうと落ちる

投げる場合は

throw new Exception();

その他

DBの操作にはPDOクラスライブラリを使うのが無難らしい。(※っても直接使う機会なんてORM全盛の今の時代、滅多にないだろう

SimpleXML を使うとパースしたXMLデータをオブジェクトとして操作できる。

$dvds = simplexml_load_file("dvd_data.xml");
foreach ($dvds->dvd as $dvd) {
     printf("%s (\%d) ", $dvd->title, $dvd->price);
}

 

≪参考にしたページ≫

カテゴリ  | コメント(0) | トラックバック(0) はてなブックマークへ はてなブックマークでの登録数

コメント

トラックバック

トラックバックリンク:
http://ja.verbmode.net/trackbacks?article_id=46

(leave url/email »)

   コメントのマークアップヘルプ 前のコメント