• Ubuntuに関連したハード、ソフトの備忘録サイトです

PHPフレームワークの構造が分かる「パーフェクトPHP」

今や、どんなスクリプト言語でもサイトを構築するのにフレームワークを使うのは当たり前になっています。サイト管理者は「FuelPHP」から勉強し始めましたが、その前身とも言うべき「CodeIgniter」が覚えるのに簡単で、日本唯一の解説書「CodeIgniter徹底入門」(翔泳社)が非常に優れていることも会って、すみませんが現在、こちらに病みつきになっております。そこでふと、フレームワークって中身はどんなになっているのだろうと気になり、随分前に購入、著者たちが独自のフレームワークを構築している「パーフェクトPHP」(技術評論社、2010年12月10日初版第一刷)を引っ張りだして読んでみました。

これまでは、何だか難しそうだなあと思って「積読(つんどく)」だけしていましたが、今回は高速フレームワークとして知られるFuelPHPやCodeIgniterを勉強していたこともあり、いざ読み始めて見ますと頭の中に入ってくること、入ってくること。本書は「Part1」から「Part6」までありますが、類書になくて本書の目玉と思われるのはやはり、「Part3 実践Webアプリケーション」でしょう。

第6章でそれまでのPHPによるWebアプリの作り方を説明した(ただし、HTMLの中にPHPコードを埋め込む原始的な方法とロジックとビューを分けるより進んだ方法の二通りで掲示板を作成しています)あと、第7章で本題のフレームワークについての説明に移り、実際に独自のフレームワークを実装しています。その後、第8章でこのフレームワークを下に、「ミニ・ツイッター(本書ではミニブログと表現していますが、ミニ・ツイッターと言って良いと思います)」を作成しています。

PHP5.3で作成されているので、サイト管理者の環境(Ubuntu14.04LTS、Nginx、PHP5-FPM5.5,MySQL5.5)でも動作しました。/etc/nginx/sites-enabled/defaultの設定は通常のLAMP動作用の設定で特に問題ありません。フロントコントローラーのindex.phpが開発用のindex_dev.phpと本番用のindex.phpに分けられているのでその点だけは注意する必要があります。

第7章では、フレームワークのコアクラスとして、①各種のクラスを自動的に読み込むClassLoaerクラス②サーバーとのやり取りをするRequesクラスとResponsクラス③ユーザーからのサーバーへの(静的なURIによる)アクセス形式を解析してコントローラーにつなげるRouterクラス⑤データベースへのアクセスを行うデータベースクラス(DbManagerクラスとDbRepositoryクラス)⑥データベースクラスとやりとりし、表示用のビュークラスにつなげるControllerクラス⑦表示用のViewクラス⑦セキュリティ対策のためのSessionクラス⑧これらのクラスを総合して、アプリケーション全体をコントロールするApplicationクラスーなどが、コアクラスとして実装されています。

そして、第8章で具体的にミニツイッターを作成します。全体として感じることは、クラスの威力とPHPの深化、それにWebアプリケーションに必要なものは何かが非常によく分かることです。説明も丁寧。何度も繰り返して読めば、フレームワークというものが良く分かってくるのではないでしょうか。PHPを本格的に学ぶ書としてオライリーの「PHP第三版」が必読書になっていますが、本書も必読書と思われ、かつ、かなり補完的な関係にあるように思われます。

ただし、Application.phpというのは、実際に使われているフレームワークには見当たらないようです。ただし、このクラスと同様の機能を有する機構が備えられていると思います。注意点としては、誤植(ただし、「てにをは」の間違いの類)が若干あるので、購入の際には最新の版(現在、第四版)を購入する必要があります。もっとも、ソースコードや正誤表は技術評論社のサイトに掲載されています(正誤表は一部との指摘あり)。また、本書は2010年師走出版と古いので、そろそろ改訂版が出る頃かと思います。

PHPも随分深化してきており、言語構造も面白くなってきています。JavaやPythonと同じようにデスクトップアプリケーションなども守備範囲になってくるかも知れません。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA