NP_EachBlogDirとNP_ImprovedMediaを統合するにあたって、オブジェクトの設計を変更してみた。その際、PHP5で実現されるOOPがとても使い勝手がよいということがわかったので、PHP5を意識した構造にしてみた。ところがそのままだとPHP4ではエラーとなってしまうことがわかったので、PHP4とPHP5の2本立てで作ることとなった、面倒だけど。

オブジェクトの設計に関して、PHP4とPHP5の違いのうち、今わかっているものを、備忘録も兼ねて記録。



1. コンストラクタ・デストラクタ

PHP4ではオブジェクトのインスタンス化の際、クラス名をメソッド名とするメソッドをコンストラクタとして利用します。PHP5ではこれは「__const()」で実装されている。この違いに注意する必要があります。

また、デストラクタに関してはPHP4では実装されていませんでしたが、PHP5では「__destruct()」で利用できます。

クラスのプロパティ(メンバー)宣言

PHP4では「var $hoge;」もしくは「var $hoge = 'hoge';」もしくは「var $hoge = array()」もしくは「var $hoge = array('hoge', 'hogehoge');」とすることしかできませんでした。つまり、「var」によって宣言を行いましたが、その型をキャストで設定できませんでした。

PHP5では型をキャストで宣言できます。「private $hoge = (string)'hoge';」が可能。

プロパティとメソッドのアクセス権設定

PHP4ではアクセス権を設定しないほうがいいと思います。もちろんしようと思えばできますが、使い勝手が悪いので、何もしていせずにすべてpublicにしたほうがいいでしょう。

PHP5は「public」「private」「protected」の3種を設定することができるので、適切なアクセス権を利用できます。

今のところ、気づいたのはこれらです。