PHPも使える! Google App Engine for Java(後編)
Google App Engine for Javaで動作するスクリプト系言語 (2)
ダウンロード サンプルファイル (5.4 MB)
エントリを表示するPHPスクリプト
登録されたエントリを表示するPHPスクリプトは次のようになります。
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=Windows-31J" />
</head>
<body>
<?php
// (1)guestbook.phpをincludeする
include_once("guestbook.php");
// (2)最大取得数を指定して、GuestBookの配列を取得する
$books = GuestBook::all(5);
$i = 0;
for($i = 0; $i < $entry_max; $i++)
{
$book = $books[$i];
if ($book == null)
break;
?>
<!-- // (3)日付を表示 -->
<span><?= $book->getDate() ?></span>
<!-- // (4)名前を表示 -->
<span><?= $book->getName() ?></span>
<!-- // (5)コメントを表示 -->
<blockquote><?= $book->getComment() ?></blockquote>
<!-- // (6)削除リンク -->
<a href="/delete.php?id=<?= $book->getId() ?>">削除</a>
<?php
}
?>
<!-- // (7)put.phpにPOSTで送信 -->
<form action="/put.php" method="post">
<div>名前</div>
<div><input type="text" name="name" /></div>
<div>コメント</div>
<div><textarea name="comment" rows="3" cols="30"></textarea></div>
<div><input type="submit" value="投稿" /></div>
</form>
</body>
</html>
- guestbook.phpをincludeする
- 最大取得数を指定して、GuestBookの配列を取得する
- 日付を表示
- 名前を表示
- コメントを表示
- 削除リンク
- put.phpにPOSTで送信
先ほど定義したPHPのGuestBookクラスをインクルードします。
GuestBookクラスのスタティック関数all()を実行してGuestBookクラスのインスタンスを配列として取得します。ここでは最大5つのGuestBookクラスのインスタンスを取得しています。
GuestBookクラスのgetDate()メソッドを呼び出して、JavaのEntryクラスから登録日時を取得します。
GuestBookクラスのgetName()メソッドを呼び出して、JavaのEntryクラスから名前を取得します。
GuestBookクラスのgetComment()メソッドを呼び出して、JavaのEntryクラスからコメントを取得します。
後述するdelete.phpスクリプトに対し、Idをパラメータとして渡すURLを作成します。GuestBookクラスのgetId()メソッドを呼び出して、JavaのEntryクラスからIdを取得します。
後述するput.phpスクリプトに対し、名前とコメントをパラメータとしてPOSTで送信します。
エントリを登録するPHPスクリプト
次にエントリ情報を登録するPHPスクリプトを見てみましょう。
index.phpのフォームからPOSTで呼び出されるスクリプトで、パラメータとして"name"と"comment"を受け取ります。
<?php
// guestbook.phpをincludeする
include_once("guestbook.php");
// "name"、"comment"を$_POST変数から取得
$name = $_POST["name"];
$comment = $_POST["comment"];
$name = htmlspecialchars($name, ENT_QUOTES);
$comment = htmlspecialchars($comment, ENT_QUOTES);
// (1)エントリを作成
$entry = new GuestBook($name, $comment);
// (2)App Engineデータストアに保存
$entry->put();
// index.phpにリダイレクト
header("HTTP/1.1 301 Moved Permanently");
header("Location: /index.php");
?>
- エントリを作成
- App Engineデータストアに保存
受け取った$name、$commentの値を使用してPHPのGuestBookクラスのインスタンスを作成します。
GuestBookのput()メソッドを呼び出して、App Engineデータストアにエントリ情報を保存します。
エントリを削除するPHPスクリプト
最後に、エントリを削除するPHPスクリプトを見てみましょう。
<?php
// guestbook.phpをincludeする
include_once("guestbook.php");
// "id"を$_GET変数から取得
$id = $_GET["id"];
// (1)指定されたIdに対応するエントリをデータストアから削除
GuestBook::deleteById($id);
// index.phpにリダイレクト
header("HTTP/1.1 301 Moved Permanently");
header("Location: /index.php");
?>
- 指定されたIdに対応するエントリをデータストアから削除
PHPのGuestBookクラスのdeleteById()スタティック関数を呼び出して、保存されているJavaのEntryクラスのインスタンスをApp Engineデータストアから削除します。
ゲストブックアプリケーションの実行
それでは早速実行してみましょう。
パッケージ・エクスプローラーでプロジェクト(guestbook)を選択し、右クリックで出てくるメニューから[実行]-[Web Application]を選択します。
それでは、次のURLにブラウザでアクセスしてみましょう。
http://localhost:8080/index.php
次のような画面が表示されていることと思います。
名前、コメントのフィールドに文字を入力して、[投稿]ボタンでゲストブックを投稿できます。また「削除」リンクをクリックすると選択したエントリを削除することができます。
まとめ
本記事で紹介したサンプルでは、PHPからApp Engineデータストアを操作するのに頑張ってやっている印象を持たれると思いますが、簡単なPHPスクリプトであればGoogle App Engine for Javaで動作させることは確認していただけたのではないでしょうか。
有志の方がQuercusのパッチを作成しているなど、PHP界隈でもGoogle App Engine for Javaへの対応は今後進んでくると思います。
JavaVMで動作するスクリプト系言語についてみれば、例えばGrailsではGoogle App Engineをサポートするようになりました。
今後とも無視できないGoogle App Engine。注目していきたいと思います。
参考資料
この記事は参考になりましたか?
既に会員の方はを行ってください。
- Google App Engine for Javaで動作するスクリプト系言語連載記事一覧
-
- PHPも使える! Google App Engine for Java(後編)
- PHPも使える! Google App Engine for Java(前編)
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 花田 善仁(ハナダ ヨシヒト)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

