PHPフレームワーク感想 2017年時点
PHPおもいで
長くサラリーマンエンジニアをやっていると、いろいろな現場に出向し様々なプログラミング言語やフレームワーク、DBを経験します。
今まで携わってきた案件の中で、PHPがプログラミング言語として一番多く携わってきました。PHP言語自体はとてもいい言語だと思います。簡単に記述できて、気軽に動かす事ができ、サクサク書けるので好きです。ただし、PHP言語をそのまま使用して何も考えずに設計実装すると、そのうちコードが煩雑になりとてもメンテナンスし辛く、バグ修正が困難になります。ただ、これはどの言語にでも言える事ですが。
PHPフレームワーク特徴まとめ
2017年時点において、私が今まで使用してきたPHPフレームワークの一覧になります。私の独断と偏見でそれぞれ特徴をまとめてみました。
名前 | 種類 | 特徴 | 速度 | PHP最低要求バージョン | FW最新バージョン | 有償無償 |
ZendFramework | 開発ツール+FW | PHP開発元のFW、IDE | 普通 | ?PHP7 | ?3 | 有償 |
Mojavi | MVC | PHP4時代のMVC | 早い | PHP4 | ?1 | 無償 |
Symfony | MVC | LaravelのベースFW | 遅い | PHP5.4 | 3.3 | 無償 |
yii | MVC | 軽量 | 早い | PHP5.4 | 2.0 | 無償 |
CakePHP | MVC | 日本で一番メジャー | 遅い | PHP7 | 3.5 | 無償 |
Laravel | MVC | 豊富な機能 | 遅い | PHP7 | 5.5 | 無償 |
RADPHP | 開発ツール+FW | IDE、ビジュアル開発 | 遅い | PHP5.2 | 2 | 有償 |
CodeIgniter | MVC | 軽量、シンプル | 早い | PHP5.3 | 3.1 | 無償 |
FuelPHP | MVC | 軽量、HMVC | 早い | PHP5.3 | 1.8 | 無償 |
SlimPhp | C | シンプル | 早い | PHP5.5 | 3.9 | 無償 |
PHPフレームワーク感想
次に今まで使用してきたPHPフレームワークについてのゆるい感想を記載していきます。
ZendFramework
言わずと知れたPHP自体をメンテナンスしているZend社のFWです。仕事で初めてphpを触れたときに使用したのもこちらです。PHP5.1ぐらいで使用していたと思います。まだ、フレームワークのバージョンは1でした。開発環境のZend Studioもセットでした。フレームワークというよりは、javaSDKのようなPHPライブラリのセットという感じでしたね。
当時はMVCの概念があまりなく、ディスパッチャ(コントローラ)とview(smarty)だけで実装していました。PHP言語自体の簡単さにも驚いた記憶があります。
Mojavi
PHP4時代のメジャーフレームワークですね。
フレームワークですが、提供されているファイルが、1つだけという衝撃的でした。しかし、きちんとMVCで設計実装できるので、見通しが良かったです。この辺から、フレームワークのソース自体を見るようになりましたね。
Symfony
ほぼフルセットで備わった大規模フレームワークです。
セキュリティ周りも整備されていて、テンプレートエンジンやバッチ周りも完備されていました。
yii
イーと読むらしいです。イーフレームワーク。オープンソースソフトウェアを導入するときに、yii上で実装されていて、改造するときにフレームワークをいじりました。こちらも一通り機能が揃っています。
CakePHP
こちらもフルセットですね。CakePHPはRailsの影響を受けて作られたそうです。ModelのORM系はActiveRecordに似ています。日本で一番有名なPHPフレームワークとなっています。
バージョンが古いPHPもサポートしているため、使用しやすいのかもしれません。
Laravel
欧米では流行っているフレームワークだそうです。最近日本でも使われている事が多くなってきたのかもしれません。
RADPHP
PHPで唯一ビジュアル開発できるツールのようです。DelphiやC++Builderという単語にピンときたらコチラ。しかし開発は停止している模様。
CodeIgniter
最近使用したため、コメント多めです。
シンプルです。機能は一通り揃っていますし、MVCとしても使えます。ただいくつか、自分で決め事をしないとならないため、コーディング量が多くなりがちです。コントローラですと外に見せるアクション名はpublicにするだけです。名前なども自由です。
よいところとしては、フレームワーク内部のソースが読みやすいため拡張しやすく、使い方がわからない機能が、あってもコードを読むとよく分かります。
何故かベースコントローラ名が決まっていたりしますが、とりあえず変えられます。アクションメソッドの前に実行しておきたい処理などは、大抵のフレームワークでは、beforeフィルタなどがついてたりしますが、codeigniterはないため自分で名前を決めて書いておく必要かあります。
FuelPHP
初期codeigniterがライセンスで揉めている間に、codeigniterに代わるフレームワークとして開発されてきたようです。
ただcodeigniterと比べてかなり機能追加されています。実装のしやすさは、やはり決め事が多いため自分でコードを書いて行く人には使いやすいかと思います。
特徴的なのはHMVCとい構造で実装できる事です。他のフレームワークにはない形で、ヒエラルキーMVCと書くように、MVCを階層構造で実装できる点です。大きなプロジェクトなどでは、単体のMVCだけでは整理できず1ディレクトリにコントローラが大量に置かれがちです。このHMVCを採用すれば、ディレクトリの様に階層構造で表現できるようになります。
SlimPhp
こちらは、シンプルにコントローラのみの実装で済みます。最近ではマイクロフレームワークと呼ばれるジャンルのようです。やはり、よく使われるのはWeb APIや、マイクロサービスなどが多いですね。
00年代のフレームワーク
00年代のPHPフレームワーク記事はこちらが参考になりました。