SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Google App Engine for Javaで動作するスクリプト系言語

PHPも使える! Google App Engine for Java(後編)

Google App Engine for Javaで動作するスクリプト系言語 (2)

  • X ポスト
  • このエントリーをはてなブックマークに追加

エントリを表示するPHPスクリプト

 登録されたエントリを表示するPHPスクリプトは次のようになります。

[リスト11]index.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>
  1. guestbook.phpをincludeする
  2. 先ほど定義したPHPのGuestBookクラスをインクルードします。

  3. 最大取得数を指定して、GuestBookの配列を取得する
  4. GuestBookクラスのスタティック関数all()を実行してGuestBookクラスのインスタンスを配列として取得します。ここでは最大5つのGuestBookクラスのインスタンスを取得しています。

  5. 日付を表示
  6. GuestBookクラスのgetDate()メソッドを呼び出して、JavaのEntryクラスから登録日時を取得します。

  7. 名前を表示
  8. GuestBookクラスのgetName()メソッドを呼び出して、JavaのEntryクラスから名前を取得します。

  9. コメントを表示
  10. GuestBookクラスのgetComment()メソッドを呼び出して、JavaのEntryクラスからコメントを取得します。

  11. 削除リンク
  12. 後述するdelete.phpスクリプトに対し、Idをパラメータとして渡すURLを作成します。GuestBookクラスのgetId()メソッドを呼び出して、JavaのEntryクラスからIdを取得します。

  13. put.phpにPOSTで送信
  14. 後述するput.phpスクリプトに対し、名前とコメントをパラメータとしてPOSTで送信します。

エントリを登録するPHPスクリプト

 次にエントリ情報を登録するPHPスクリプトを見てみましょう。

 index.phpのフォームからPOSTで呼び出されるスクリプトで、パラメータとして"name"と"comment"を受け取ります。

[リスト12]put.php
<?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");
?>
  1. エントリを作成
  2. 受け取った$name$commentの値を使用してPHPのGuestBookクラスのインスタンスを作成します。

  3. App Engineデータストアに保存
  4. GuestBookのput()メソッドを呼び出して、App Engineデータストアにエントリ情報を保存します。

エントリを削除するPHPスクリプト

 最後に、エントリを削除するPHPスクリプトを見てみましょう。

[リスト13]delete.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");
?>
  1. 指定された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。注目していきたいと思います。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 花田 善仁(ハナダ ヨシヒト)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4145 2009/07/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング