对PHP框架的感想
我曾经在经营中使用过以下框架。
由于许多人不懂英语(甚至根本不读英文),所以我想补充一下,”I was using the following framework for business.”的意思是我在工作中使用了下列的框架。
七大海贼王 (qī dà zé
symfony
ORMは凄いと思った。(開発は別プロジェクトだけど)
完全なORMとは、Form <-> Object <-> Database だと思った。1
仕様が複雑で整理されてないと思った。
このプロジェクトはつまり、別のベンダーが開発した良さそうなのをパチってきてるだけだった。
パチるのはいいけど、パチっただけで設定はパチり元のままなので、仕様はグチャグチャだった。
仕様が複雑なので理解しないまま使ってグチャグチャにしちゃう現場を2度見た。2
symfonyという名称は烏滸がましいと思った。よく言えばJAZZ。実際はチンドン屋だった。
CakePHP
モデルの複数形がウザいと思った。3
複数形にするための実装がスゲー間抜けだと思った。
擬似ORMっぽいものがついてる。(以下モデル)
モデルは、複数レコードの一括INSERTをやろうとしたらハマる→saveAll()はIDを個別に取れない[^ca2]
モデルで、複数レコードの一括UPDATEをやろうとしたらハマる→updateAll()は何かでハマった
モデルは、フィールド名をタイプミスしてもエラーを表示してくれない
カスタム(自作)バリデーターの組み込みが簡単
バリデーターは、Formから入力された値のバリデーターなので、JSONで送信されてきた値には使えない。
ルーティングの設定がHTTPプロトコルのDELETEとかにも対応してて意味がないと思った
CakePHPでArray hellという単語を知った。(他のFWでは聞かない)
それ以外は普通だった。(そもそもそんな使わなかった)
CodeIgniter
簡単・速いって言うけど、機能が全然ないじゃん!って思った。
テンプレート機能はあるが、レイアウト機能が無い。
フォームヘルパーもデータベースヘルパーも無い。
初心者が最初に勉強するフレームワークとしては良い。(なぜなら、機能が少ないため学ぶことも少ない。従って迷いにくい。)
ActiveRecordが使えるっていうけど、それ、他のフレームワークでも使えるじゃね?って思った。
基本的な機能は高校生が夏休みで作れるレベル。
プロなら1日で作れると思う。4
ZendFramework
FWとしての仕組みがカオスなので、これで作られたシステムもカオスにならざるを得ない。
サラリーマンが給料を貰うために業務として作ったって感じ。没個性。
フォームヘルパーが使う価値がないと思った。
データベースヘルパーが使う価値がないと思った。
どうでもいいヘルパーがてんこ盛りだった。
だったらフォームとデータベースを強化しろと思った。
何も考えずに使ったら、セキュリティ的にザルになると思った。
フレームワークが担保しないの?セキュリティは人間任せ?だったら使う意味なくね?
確か、フォームヘルパーは単にフォームのinputを出力するだけで、値の保存は自前で実装しないといけない。←だったら手書きでいいじゃん!
しかも、フォームの実装の仕方が面倒くさくて使ってられない。←手書きの方が分かりやすくて早いし速い
そして最後に echo ‘
‘ とか書かなくちゃいけなくて、「江戸か!」って叫びたい気持ちでいっぱいだった。苦痛だった。
validatorは別のクラスに分離されてて、それはいいんだけど、\$_GETとか\$_POSTとかで取得した値をvalidatorを通して、正しかったら保存するんだけど、htmlentitiesはプログラマーが明示的に処理しないとXSSが発生するっていう手抜きな仕様で、フォームの再入力が発生したらinputのvalueには自動的に代入しないから、代入される仕組みも書かなくちゃいけなくて、htmlentitiesしてたら二重にエスケープされて、そこも調整しなきゃいけなくて、「これFWで作る意味があるの?フルスクラッチと変わんなくない?」っていう原始時代に突き落とされたような気分でいっぱいだった。ZFスゲーって言っている奴はあまりにも不勉強だと思った。
Yii Framework
Yiiって、何て発音するのか分からなくて、軽くイラっとした。5
チャイニーズが作ってるので、気にならない人はどうぞ。
Modelの継承の流れが、作った人以外わからなくなるシステムになりやすい。
たいした機能がないのに、FW自体のファイル数が多過ぎると思った。
とにかく無駄に複雑。(システムが複雑になるのは、設計者の思慮が足りないから)
Dispatchの処理がやたら長い。(FW作者の中で考えがまとまっていないんだと思う)
擬似ORMが付いてる。
エラーのキャッチの仕方が個人的に好きじゃない。
エラーのキャッチの仕方がプロダクション環境だと問題になった。
i18nに対応する気概は素晴らしいけど、仕様が残念だった。
FW作者の記法が、とにかくダメだった。この記法を真似してる奴がいて、「江戸か!」って叫びたくなった。
Memcacheをキャッシュとして使うヘルパーが付属するが、ドメイン毎にネームスペースで区切らないので、同じmemcachedを参照する他のサイトのキーとコンフリクトしてた。この中途半端さはZendFWに比肩できると思った。
付属のMemcacheヘルパーを使って作ったシステムがあったんだけど、諸事情でmemcachedを止めたらシステムも止まった。
上記の理由でmemcache関連のバグ調査をしたかったんだけどできなくて、諦めて運を天に任せて今日も動いてます。あゝ無常。
まぁとにかく、片手落ちな実装がてんこ盛りだったので、商用環境で使うのは止めた方がいいっすよ。地獄をみます。(地獄を見たい人にはおすすめ。一度くらい見とけ!)
Phalcon
無難。可もなく、不可もなく。
設定は割りと分かりやすい。
バイナリにビルドされたFWだから速いっていうけど、実測はそれほど差がでない。
そもそもストレージをSSDにしたり、データベースの問い合わせ結果をキャッシュしたら埋まるような差でしかない。
機能に取り立てて優れた点はない。
DIの実装方法が良くなく、コード補完が効かない。コード補完を知らない人には関係ないっぽい6
ORMっぽいのが付いてる。
ORMに指定できるのはColumns, Conditions(WHERE句), Bind, Order, Limitだけ。OrderはASCのみで、Offsetは指定できない。
ORMに謎の仕様がある。
邦訳が途中で力尽きてる。ご愁傷さまです。
Phalconの欠点は、バイナリにビルドしていること。一々ビルドしなきゃいけないから開発が遅い。スクリプトで作って、機能的に発展も展開もfixしてる部分だけをバイナリにすればいいと思った。
Ethna
完全に時代遅れ。78
使用一个技巧,每次插入数据时都生成一个新的Model实例。
菜鸟
- Laravel,FuelPHP和CharcoalPHP看起来很有趣,虽然我只浏览了概要。
脱离
-
- ちいたん
- 我不太清楚,但這個網域被第三方盗取了,哈哈哈。(建議在公司不要點擊!)
物件<->数据库应该被称为Half-ORM,而数组<-数据库本来就不是ORM。
你说了吗?!现在,你批评了OpenPNE2!!
将名称改为复数是一个容易犯的错误。我想,那些称赞这个实现的人是不是正常??
举办一个名为CI8的比赛,用8个小时来制作CodeIgniter应该很有趣。
这是“震惊者”小怪的呼喊声。
你不使用代码补全吗?还是你不知道呢。不了解方便的话,就不会觉得不方便。顺便说一句,最强的代码补全是微软出品的Visual Studio。听说还可以开发PHP。据说在Mac上也可以运行。
现在重新看,原来没有对SmartURL进行支持。(我完全忘记了这件事)支持SmartURL的版本在这里,真是令人惊讶,还有上市公司仍在使用它,真让人惊讶。
文档中途中力不从心。(-人-)
虽然说微软的产品不好,但这不仅限于微软。制作Windows UI和Office产品的开发人员,为了拿薪水作为上班族,为了工作,做的是对于自己来说特别没有感情的产品程序。或许Visual Studio是他们自己使用的产品,所以会投入热情。这不仅限于微软。
Note: Please note that the Chinese translation provided above is in Simplified Chinese.