Unknown::Programmingスマートフォン用の表示で見るUnknown::Programmingこの広告は、90日以上更新していないブログに表示しています。PHP仕事柄PerlもPHPも使うんだけど、どうにもPHPが好きになれない。先にPerlから入ったもんだから後から入ったPHPに対して不満があるのかな?ま、とにかく両方やっててPHPが微妙だなぁと思う部分を列挙してみよう。PHPに関してそれほど詳しくないので間違っている部分もあるかもしれません。あ、ちなみにここでいうPHPってのはPHP4(PHP4.4.1)のことです。'vars')これが一番痛い。Perlでstrictを使わずに実装してるような、そう、まるで先祖帰りしてるような感覚になってしまうので本当につらい。変数のスコープ変数のスコープが関数単位でしか発生しないのが痛い。これによりif条件の場合のみとかループ中でしか使わない変数とかを定義できない。変数の存在範囲を細かく設定できないのだ。僕はPerlで実装する時は配列とハッシュを良く使い分けてます。ref関数でARRAYなら配列用の処理、HASHならハッシュ用の処理をするようなケースがあったとします。}こういうことをPHPでやろうと思ったときにできない、何故できないかというとPHPは配列もハッシュ(連想配列)も同じだから。);とすればハッシュになるので、現在$paramが配列なのか、ハッシュなのかを判別する完璧な手段が無いのです。}みたいな感じでやれば殆どの場合判別できるんですけど、でもこれでもハッシュのキーに数値を使っていた場合は配列に誤認識されることになります。例外処理これもPHPが好きになれない大きな理由のひとつ。一応set_error_handlerってのがあるんだけどグローバルに定義するものなので局所的には使いにくい。エラーハンドラ用の関数を予め定義しておかないといけないのもめんどくさい。restore_error_handler();で、もうひとつ。例外処理終了後の処理の制御ができないのもイタタタです。'_hoge';これを実行すると「c_hoge」と表示される。'_hoge';「cd_hoge」と表示される。こんなことになるかというと、set_error_handlerでエラーハンドラを設定した場合、エラーを補足後、エラーのあった場所に戻って処理が続行されるから、です。したがってPHPの場合は例外処理のやり方としてクラス設計段階から常に戻り値にエラーフラグを返すようにするなどの処置が必要となります。}実際PEARのDBクラスとかは例外が発生した場合に常に戻り値にエラークラスを返すような仕様になってますな。関数のリファレンス関数のリファレンスが使えない。使えば使うほどガンガン関数が定義されていくのでちょっと微妙です。9と表示されるって感じでアクセスできたりします。クロージャ個人的によくクロージャを使うのでこれができないのは悲しいですね。あったりしてそれらしいことは出来るみたいなんですが、どっちにせよ楽に実装することはできないようです。便利なライブラリ群が無い、いや、一応PEARっていうのがあるんだけどCPAN程豊富じゃないしPEARに属さない一匹狼クラスとかも多くてわかりにくい。このほかにも細かいことを言うとメソッドチェーンができなかったり、多重継承(Mix-in)できなかったり、qw//使いてぇーだったりと、まあ色々あるんですけどそこは言語が違うんだから受け入れるしかないですよね。ここまで書いてみて結局PHPが嫌いなのか?と思われるかもしれないが嫌いではない、ただ好きになれないだけってこと。先にPerlを知っちゃったもんだからPHPにも同じものを求めてしまっているのかも。逆にPHPはPHPでPerlには無い良い部分もあるし。foreachの構文とかはPHPの方がキーと値をワンセットで取ってこれるのでいい感じ。is_arrayとかもお気に入り。言語仕様でswitchがサポートされてるのも良い。今度はPHP6でstrictあたりをサポートしてくれたらたぶんそれなりに好きになりそうな予感。14:52PHPがどうにも好きになれない理由Tweet広告を非表示にする関連記事2009-12-18PHPのhtmltemplate.incでオブジェクトやらフィルターやらひょんなことからhtmltemplate.incというHTMLテンプレートエン...2009-11-12配列か連想配列かを判別するPHPにおいて、ある配列が連想配列として使われているのかどうか...2009-08-19ArrayObjectによる配列演算子のオーバーロード風PHP5やり始めたばっかでまだ右も左もわからずに右往左往してま...2008-05-29Perlが初めての人に教えてあげたいちょっとしたことタイトルは釣りです。良く書き方を忘れがちなソート。月別アーカイブはてなブログをはじめよう!fbisさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。