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フレームワーク記事はこちらが参考になりました。
PHPフレームワークの歴史と現状