| Next | ||
| ダウンロード |
Sabaphyは、PHP5で書かれたWebアプリケーション学習用のフレームワークとO/Rマッピングツールです。このホームページでは、Sabaphyに関する情報を提供します。
Webプログラミング分野では、Javaの世界でもPHPの世界でもフレームワークや軽量コンテナ等が多数登場してきて、どんどん便利になってきてい
ます。しかし、「軽量」とはいってもEJB 2 に比べての話で、かなり大がかりなものがほとんどです。業務用を目的としているから止む得ないのかもしれませんが、初心者には使いこなせないものが多いの
が実情です。その結果初心者は、相変わらず低水準のAPI(注1)を使って、ファイル操作、DBアクセス、セッション管理のプログラムを書いています。
(注1) 低水準API: レベルが低いということではなく、人間の発想より機械の動作に近く、初心者には難しいプログラムのことです。
何か間違っていると思いませんか?
私は大学で情報システム教育を担当しています。プログラミングそのものは専門ではなく、上流の分析設計を教えたいのですが、設計結果を簡単に実装できる環
境がなく頭を悩ましてきました。私のところの学生のように、プログラミングそのものを専門とするわけではなく、実現されるアプリケーションに関心がある人
が、簡単に使いこなせるツール(注2)を目標に開発したものが Sabaphy です。
(注2) O/Rマッピングツールとフレームワーク
Sabaphyでは、簡単なものは簡単に実現できます。その一方で、多少手の込んだものも、それなりに実現できるように配慮しました。当面、J2EEや
EJBの前準備としての学習用に使うことを想定していますが、ある程度のものであれば、実用目的でも使えるのではないかと思っています。
ただし私自身は、本格的な業務システムの開発経験はありませんし、PHPも使い始めて日が浅いです。PHP利用者や業務システム経験者の方々から、ご批
判・ご助言をいただけるとありがたいです。
Sabaphyを構成する主要なクラスは以下の3つです。
学習用に使いやすさ、分かりやすさを優先させています。
(1) 特別なインストールや配備は不要
学習面での分かりやすさを考慮して、一部変更しました。Lect4(O/Rマッピング)以降の学習に若干影響があります。主な変更点は以下の通りです。
(1) ライブラリクラスファイルの拡張子の変更
従来の「.php」を「.class.php」に変更しました。教材の中でクラスファイルの拡張子を「.class.php」にすることを薦めているので、そのことと整合性をとるためです。例えば、EntityManager.phpは、EntityManager.class.phpに変わりました。プログラムの先頭のrequire_onceでの指定で使っています。これらを変更してください。
(2) DBテーブルの自動生成機能を追加(EntityManager)
EntityManagerにDBテーブルの自動生成機能を追加しました。これにより、DBの初期設定プログラム(initialize.php: SQLのcreate table文の発行)は不要になりました。
(3) DB検索メソッドの追加・変更(EntityManager)
検索条件を書くだけで検索できるメソッドquery(), prepareFetch()を追加しました。これと上のテーブル自動生成機能により、SQLをまったく知らなくても、Sabaphyを使って、一通りのアプリケーションが構築できるようになりました。これに伴い、従来のfindByQuery(), prepareFetchByQuery()は、findInSQL(), prepareFetchInSQL()にメソッド名を変更しました。また、getNextByFetch()はgetNextFetch()にメソッド名を変更しています。
(4) 例外送出をコマンド発行と同一視(Dispatcher、ExceptionHandler)
例外が送出されたとき、その例外が属するクラス名と同名のコマンドが登録されていれば、そのコマンドを実行するように変更しました。これにより自由度の高いエラー回復処理やカスタムエラー画面登録ができるようになりました。これに伴い、ExceptionHandler側のカスタムエラービュー、エラー回復コマンドの登録機能は削除しました。
(5) コマンド情報のオブジェクト化($commandInfo)
ワークユニットのアクションメソッドの引数やビューで参照できる変数である$commandInfoを従来の連想配列からオブジェクトに変更しました。CommandInfoというクラスがライブラリに追加になっています。これはワークユニット内でその内容変更が容易になることと、ビューとしてSmartyを使うとき、データの受け渡しを容易にするためです。
(6) クラスオートローダの追加(AutoLoader)
クラスオートローダ AutoLoader をライブラリに追加しました。これを利用することで、require_once文を個々のクラス毎に書かずにすませることができるようになりました。
Sabaphyはフレームワークベースのアプリケーション開発の学習を主目的としてお り、オープンソースとしてソースを含めて公開します。Sabaphyライブラリのライセンスは、GNU GENERAL PUBLIC LICENSE に準拠するものとします。ご利用に当たっては利用者の責任でご利用下さい。
東京国際大学商学部情報システム学科 佐藤英人
e-mail: sato@tiu.ac.jp
| Next | ||
| ダウンロード |