GAE WebApplication Projectの作成と各種設定
今回のアプリケーション作成で使用するEclipseプロジェクトと設定は、第2回「SQL4GでGAE+PHPを体験しよう」で使ったものを使用します。
今回のアプリケーションは、以下の5つファイルで実現しています。PHPとSmarty側でそれぞれファイルを作成します。
PHPのファイルは1ファイルのみです。
- empmaint.php:
画面遷移やデータベースからのデータ取得、更新などのアプリケーションの振る舞いを実装しているphpファイル
以下の4つのファイルは、Smartyテンプレートファイルです。
- empmaint.tpl:
社員条件設定/社員登録画面のSmartyテンプレートファイル - empmaint_searchret.tpl:
社員検索結果表示画面のSmartyテンプレートファイル - empmaint_edit.tpl:
社員編集/社員削除画面のSmartyテンプレートファイル - empmaint_done.tpl:
編集完了を知らせるSmartyテンプレートファイル
PHPファイルは(projectRoot)/warに、Smartyテンプレートは(projectRoot)/war/templatesに配置します。
ソースコードの説明
empmaint.phpのソースから、重要な部分のみ抜粋します。
<? include $_SERVER["DOCUMENT_ROOT"]."/phplibs/inc.php"; // (1) include $_SERVER["DOCUMENT_ROOT"]."/phplibs/Smarty/Smarty.class.php"; // (1) include_once "DB.php"; // (1) class Empmaint { (中略) function Empmaint (){ $this->_smarty = new Smarty(); // (2) $this->_smarty->template_dir = $_SERVER["DOCUMENT_ROOT"].'templates'; // (2) } (中略) function searchForm(){ $this->createCheckBox(); $sql = $this->createSearchSQL(); $db = DB::connect($this->_dsn); // (3) $ret = $db->query($sql); $arr = array(); while ($row =& $ret->fetchRow(DB_FETCHMODE_ORDERED)) { $emp = null; $emp["EMP_ID"] = $row[0]; (中略) array_push($arr,$emp); } $this->_smarty->assign('data',$arr); $db->disconnect(); $this->_smarty->assign('params',$this->_params); $this->_smarty->display('empmaint_searchret.tpl'); } (中略) php>
- include指定にinc.php、Smarty.class.php、DB.phpを指定します
- コンストラクタで、Smartyのインスタンスを設定すると共に、テンプレートのディレクトリ((projectRoot)/war/templates)を設定します
- Pear::DBが持つquery関数やfechRow関数が、従来の手順で使用可能です。また、Smartyが持つassign関数やdisplay関数も使用可能です
empmaint.tplも重要な部分のみを抜粋します。
(前略) <body id="main_body"> <div> <div id="form_container"> <form id="form1" class="appnitro" method="post" action="empmaint.php"> <ul> <li id="li_name"> <label class="description">社員名</label> <span> <input id="name" name="name" class="element text" maxlength="255" size="20" value="{$smarty.post.name|escape|default:""}"/> // (1) </span> </li> {$smarty.post.name} <li id="li_gender" > <label class="description">性別</label> <div> {html_radios name=gender options=$params.gender class="element radio" selected=$smarty.post.gender} // (2) </div> </li> <li id="li_blood" > <label class="description">所属</label> <div> <select class="element select medium" name="dept"> // (3) <option value="">選択してください</option> // (3) {html_options options=$params.dept selected=$smarty.post.dept} // (3) </select> </div> </li> (中略) </div> </li> (後略)
- Smartyのpost指令でpostされた社員名を取得して、textフィールドに表示します
- Smartyのpost指令でpostされた性別を取得して、radioフィールドに表示します
- Smartyのpost指令でpostされた所属を取得して、selectフィールドに表示します
empmaint_searchret.tpl、empmaint_edit.tpl、empmaint_done.tplは、テンプレートとして複雑なソースコードではないので省略します。
今回のアプリケーションは分かりやすさを重視したため、PHPのフレームワークは使用していませんが、PHP4Gでもアプリケーションの規模に応じたフレームワークを導入できます。
なお、ソースコードを含め、今回作成したアプリケーションをダウンロードできます。
EclipseからGAEへのデプロイを行い、http://(GAEアプリのID).appspot.com/empmaint.phpにアクセスしてください。社員検索/登録画面が表示され、各種動作が正常に終了することを確認しましょう。
PHP4Gのよくある質問
連載を通じて、PHP4Gへの質問を受けましたので、その回答とあわせて記載します。
Q1 セッションやクッキーは使用できますか?
A1 問題なく使用できます。具体的な使用例として、今回紹介したempmaint.phpに定義されているeditForm関数やupdateForm関数を参考にしてください。
Q2 PHP4Gで使っているPHPのバージョンはいくつですか?
A2 バージョンは5.2.0です。
Q3 PHPの環境などの情報を知りたいのですが。
A3 http://(GAEアプリのID).appspot.com/phplibs/phpinfo.phpにアクセスすると、phpinfoで確認できる情報が出力されます。
今回は、アプリケーションの構築を通じて、PHP+リレーショナルデータベース+テンプレートエンジンを活用したアプリケーションが、GAE上で動作することを体感できたと思います。次回は、RailsアプリケーションをGAE上で動作させるための手順を紹介します。お楽しみに。
3/3 |
Index | |
PHPでGAE上に社員検索アプリを作る | |
Page1 ライブラリの説明 GAE上でファイル保存方法とSmartyのミスマッチ |
|
Page2 GAE on PHPにおけるSmartyの連携方法 Pear::DBを活用したデータアクセス |
|
Page3 GAE WebApplication Projectの作成と各種設定 ソースコードの説明 PHP4Gのよくある質問 |
GAE+PHP/Rubyで拓く新世界 |
Coding Edgeお勧め記事 |
いまさらアルゴリズムを学ぶ意味 コーディングに役立つ! アルゴリズムの基本(1) コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう |
|
Zope 3の魅力に迫る Zope 3とは何ぞや?(1) Pythonで書かれたWebアプリケーションフレームワーク「Zope 3」。ほかのソフトウェアとは一体何が違っているのか? |
|
貧弱環境プログラミングのススメ 柴田 淳のコーディング天国 高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。貧弱なPC上にビットマップの直線をどうやって引く? |
|
Haskellプログラミングの楽しみ方 のんびりHaskell(1) 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう |
|
ちょっと変わったLisp入門 Gaucheでメタプログラミング(1) Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう |
|
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|