PHPでウェブアプリケーションフレームワークを自作しよう 第一回
PHPのフレームワークはSymfony、cakePHP、Zend frameworkなど色々と選択肢があって今更自作する必要性など感じられない、こんな連載記事の需要もどうなんだろ
しかしながらPHPも5.3以降で名前空間、無名関数まで使えるようになり、ウェブ開発現場での主流の言語の立場はまだまだ崩さないだろう
特に日本の企業では圧倒的にPHPの案件ばっかりだ
(僕の周りがたまたまそうなだけなのかもしれないが)
PHPはレガシーで美しくない、大衆向けの言語だと思われがちだが、度重なるバージョンアップでわりかし楽しいプログラミング的なことは可能だと思った
Rubyで動的なAPI作るようなことは__callとか__callStatic等のマジックメソッド使えばある程度再現可能であるし
メタプログラミング的なことはやはり回りくどい実装になってしまうが…
フレームワークを自作していくことで自分の中でPHPの可能性が広がると思う
開発環境
御託はいいとして、第一回は開発環境の話から
適当にインストールしたら、インストールディレクトリ下のbinにパスを通しておこう
Macなら.bashrcに
export PATH=/Applications/MAMP/bin/php/php5.3.6/bin:$PATH alias phperror="tail /Applications/MAMP/logs/php_error.log" alias apacheerror="tail /Applicatons/MAMP/logs/apache_error.log" alias mysqlerror="tail /Applications/MAMP/logs/mysql_error_log.err"
とか追加すればいいと思う($PATHの前後注意)
シェル上で
source ~/.bashrc which php
って打って、
/Applicatons/MAMP/bin/php/php5.3.6/bin/php
って返ってきたら成功
エディタは各自好きなの使えばいいが僕はEclipse+PDT使ってる
PHPUnit
pear config-set auto_discover 1 pear install pear.phpunit.de/PHPUnit
でおk
/Applications/MAMP/bin/php/php5.3.6/lib/php下にPHPUnitディレクトリがあればインストール成功
あと以下の追加パッケージは入れておこう
pear install phpunit/DbUnit
PHPUnitはこれからフレームワークの開発をTDDで行うために必須のテスティングフレームワークである
悪いPHPerが混沌なPHPのコードを産み出してしまうのはPHPのオブジェクト指向を活用しきれてなかったり、テストが十分でなかったりするんだが、PHPUnitは素晴らしいテスト自動化のツールなので積極的に利用すべきだと思う
ドキュメントも充実してるのでなおさら良い
シンプルなMVCモデルを目指そう
MVCモデルはもうウェブアプリフレームワークでは標準のデザインパターンだとおもう
RDBMを扱い、データを読み書きするModel、APIの呼び出しに応じて、Modelからデータを処理し、Viewに橋渡すController、Controllerから受け取ったデータを人が読める形に整形出力するViewといった具合でアプリケーションを作るメリットはたくさんある。
特に、Viewを分離するって言うことは、Webデザイナさんとの連携を図るための重要なファクター
もともとPHPはテンプレート言語であるため、明確にViewを分離するために、今回はSmartyというサードパーティのテンプレートエンジンを利用しようと思う
といったところで執筆力が尽きた
次回はディレクトリ構成と、コアの部分の実装をしていこうと思う