■プロローグ
PHP5が使ってみたくて、サイトを開きました。
すべてPHP5向けに1からコーディングしています。
仕事でPHP4で社内向けツールを作ったことがあり、それまではPerl、C++での開発だったこともあり、ウェブのための言語のおもしろさにハマりました。
今は仕事ではJavaを使っているので、PHPはもっぱら趣味程度。
本当は趣味もJavaでいいけど、Javaが使えるフリーのサーバが見あたらず・・・
ちなみにpythonとrubyもかじりましたが、少なくともrubyは"if 〜 end"という表記が嫌い(当然、Basic系も嫌い)なので生理的に無理です。それを除けば面白そうな言語だけど。
pythonは、面白いと思いつつも後回し。そのうちもうちょっとちゃんとやるかも。
■コンテンツリスト
▼メイン
PHPで書いたコンテンツ
- 月齢計算機
- 日付から、月の形を計算するスクリプトです。需要があったので、ネットに転がっていた公式を元に作成してみました。
- 名言集
- 特に仕事とかに疲れたとき、迷いがあるときに読むための名言集を集めてみました。コーディング的に特記するところは無いです。
▼Source Tip
ユーティリティとか、スケルトンとか、ロジックメモ的なクラスとか。使えそうなものからゴミ以下のクラスまで。
(本当は、このサイトのスケルトンフレームワークを公開しようと思ったけど、セキュリティ的に危うくなるので自粛しました)
▼雑記
時間ができたら、ここを厚くしたい。したいけど時間が・・・
- 自分なりのコーディング規約
- 使える関数
- 使えるロジック
■エピローグ
PHP5を使った感想を。
4と5の比較まとめサイトではないので、思ったことをつらつらと書きつづってみます。
所見としては、だいぶオブジェクト指向ライクに書けるようになったな、といった印象です。
少なくとも、4みたいな無理矢理感は激減しています。
public、privateの区別が付けられるだけでも大進歩。当然、protectedも。
abstract、finalも実装されたので、継承がしやすくなった。
staticアクセスも導入されたし、クラス内定数も使えるように。
(throwsがないのがうざいけど)例外処理ができるようになったのも大きい。
インスタンスの代入が参照渡し基本、クローンはclone関数で行う当たり前の挙動になったのも、かなり大きい。
(4では、いちいち&をつけないと$instanceA = $instanceB とするたびにコピーが発生)
が、やはりperlの流れも汲む言語。
javaやC++に慣れていると、自由度?の高さが仇となって、保守性の悪さは相変わらずです。
特に、型について曖昧な点は、次には何とかして欲しいところ。
せっかくinterfaceが用意されたのに、インスタンスの型を宣言できないとポリフォリズムとの親和に欠けるように思います。
結局、publicだけを集めた純粋仮想クラスを継承しているのと実用上は変わらない・・・
(もちろん、設計思想的には有用だとは思います)
クラスの戻り値を定義しない仕様。これも変わっておらず、カプセル化する上で致命的だと思います。
公開されたメソッドの戻り値の型が分からないと、結局のところソース追うか仕様書やコメントを頼ることに。
引数の型の制御は、クラス型につき諧になりました。
けど、必須ではない上にboolean,string,integer等のプリミティブ型は不可。
固く組もうとすると、中で無駄に条件分岐が増えてしまう・・・
一応、instanceofが実装されたので、javaでいうジェネリックがデフォルトになっているという解釈もできるけど・・・
ポリフォリズムとカプセル化をうまく取り入れにくいオブジェクト指向っていったい・・・
と思う反面、やはりモノができあがるまでのスピードがC++やjavaと比較して速いです。
オーバーロードがPHP6でようやく実装されるらしいので、速く6が出て欲しいと既に思う今日この頃。