[BACK]


>Oct 9,2008 (Thu) 07:42 - [毒 php] 「CodeIgniterが急激によくなってきた」というエントリが良くなってきている点を全く指摘していない件について

CodeIgniterが急激にいやになってきた」というエントリに対して「CodeIgniterが急激によくなってきた」というエントリがあがってるというのを聞いた。
で、ざっくり両者を読んでみたんですが言及されているエントリより、言及しているエントリのほうに違和感を強く覚えてしまったのでいろいろ書いてみる。
このエントリの存在を教えてくれた友人が「たまには技術エントリをかいてください、もう何ヶ月かいてないんですか!」って脅してきたからじゃないよ><
ちなみに自分の立ち位置としては、使ってきたフレームワークは
自作>mojavi2>自作>mojavi3>mojavi3+独自>symfony0.4>symfony0.6>symfony1.0>symfony1.1>symfony1.2(イマココ)
って感じであり、CodeIgniterは使っていません。
なので、出来るだけ特定のフレームワークに影響されない感じで書いてみます。

ParserがSmartyじゃない

これは指摘点の通り「Parserと言っているもの=テンプレートエンジン」でしょう。
Smartyは動作が重く、サーバに負荷をかけるというのも事実です。
事実、symfonyやCakePHPといった最近のフレームワークはSmartyのようなテンプレートエンジンを使っていません。
ただ

PHPを最も上手く使う方法は、「汚かろうと何だろうと、とにかく正しく動けばいい」という妥協を積極的に受け入れることだと思う。

ここに対しては全く同意出来ません。
使い捨てでないコードがPHPで書かれることが多くなって今、わかりやすいコードを書くことは重要です。
下の方の言及で業務的な話も入れているのに、「汚くても動けばいい」などというのは見当違いも甚だしい。
あと、Smartyを使うことで綺麗なコードになるか、といわれれば違うしSmartyを使わなければ汚いコードになるか、というのも違います。

セッションをクッキーに直書きする

元記事の方で指摘しているのは
「serializeした変数をCookieに全部保存してるのはださくね?クライアントにはIDだけ持たせればいいじゃん」ということ。
対して言及している方の指摘は「ファイルシステムでセッションを持つのはださい」ということで、論点がずれています。
よく読みましょう。

セッションを読み書きするメソッド名が長い

どんな言い訳をしても「メソッド名が長い」というのは事実です。
「フレームワークを拡張してユーザデータではない属性をセッションに加えるさい、アプリケーション実装との名前衝突を心配しなくて済む」という指摘も微妙です。
個人的には名前衝突を解決するのなら適切なクラスわけを行ない、メソッド名は短くした方が良いかと思います。
非常に極端な例ですが、名前空間を分けるために関数/メソッド名をのばしてると、某オープンソースのSNSみたいに50文字を超える関数名がやたらある、といった恐ろしい状態になりかねません。

まずライブラリのメソッドの中身に「$_POST」がハードコーディングされているため、任意の変数をバリデートできない。

バリデーションは「何らかの境界で、正体不明な外部のデータを、内部で使える形式(型)に変換する試み」という指摘は最もですが「正体不明なデータ」というのはPOSTされたデータに限りません。
正体不明なデータは「ユーザーからされる(意図している、してない関係なく)入力のすべて」でしょう。
そう考えた場合、validatorに$_POSTがハードコーディングされている状況は好ましくないのではないでしょうか。

そして、エラーメッセージを変数で取得するとデフォルトで

に囲まれて来るという驚きのダサさを発揮してくれる。

「デフォルトがださい」という指摘に対して「変更できるよ」という指摘で、これも論点がずれています。
また、例が書かれてますがこの例がさっぱりわからない。
ひょっとしたら「他の箇所でデフォルトを変えれるから、テンプレートに書くことが少なくなる」と言いたいのかもしれませんが、
「エラーメッセージをどう見せるのか」はデザイン的な話で、View/Templateに近いところに書ける方が好ましいと思います。

「CodeIgniterが急激によくなってきた」というタイトル

このタイトルですが、エントリから「CIが急激によくなってきた」ということが全く読み取れません。

このエントリに限らず、他人のエントリに時運が違和感を覚えるとき、単に「おかしい」とだけ考えて切り捨てていると真実を見逃します。
おかしなエントリだと思えば思うほど、「なぜそうなったか」を考えることは重要です。
基本的に、批判される側の多くは批判する側より優秀だということを忘れると恥をかく結果になります。
ほんと、自分も気をつけよう(`・ω・´)
ああ、あと。
サンプルコードがshort_open_tagをONで良いのは小学生まで。
今のPHPはデフォルトはOFFですよ。

・ 名無しさん - Oct 9,2008 (Thu) 11:28

>サンプルコードがshort_open_tagをONで良いのは小学生まで。
>今のPHPはデフォルトはOFFですよ。

Versionいくつからですか?
PHP5以降OFFだと思ってたのですが、今念のため調べるとデフォルト"1"のような記述がありました。
http://www.php.net/manual/ja/ini.core.php

・ きりゅ。 - Oct 9,2008 (Thu) 15:49

>>名無しさん
ちょっと書き方がわるかったですね。
ご指摘ありがとうございます。
PHPを使う際、使うことを推奨されているphp.ini-recommendの値が変わっています。
変更されたのはPHP5.1.0になるときです。

php-5.0.5/php.ini-recommended:short_open_tag = On
php-5.1.0RC1/php.ini-recommended:short_open_tag = Off

・ 名無しさん - Oct 10,2008 (Fri) 11:28

解説ありがとうございます。
恥ずかしながらphp.ini-recommendの存在を知りませんでした。

#5.2.7RC1でましたね

・ tanakahisateru - Oct 11,2008 (Sat) 06:05

引用元を書いた者です。見つけてしまいました。

>サンプルコードがshort_open_tagをONで良いのは小学生まで。

php.iniでショートタグオフでも、CIのコンフィグは勝手にオンにしてくれるので、CIの場合はショートが普通かと思ってるのですが、違うのでしょうか。もっとCIに詳しい方、おられませんか〜?

・ 名無し - Sep 25,2009 (Fri) 13:23

え?普通にxamppなんぞ導入してCI動かしたら、short_opn_tagは許されませんが。


名前とか: (省略可)
コメント:

パスワード:


上に表示されている画像に書かれている文字を入力してください。:

[BACK]