Category

Zend Framework チュートリアル その2 - チュートリアルアプリケーション

チュートリアルアプリケーション

Zend Framework アプリケーションを作成できる全ての部品が揃ったので、作成するアプリケーションについて見ていきます。我々はこれからCDコレクションを表示する非常に簡単な在庫システムを構築していきます。 メインページはコレクション一覧を表示して、CDを追加、編集、削除が出来るようにします。他のソフトウェアエンジニアリングのように、少しだけ事前に計画を立てておきます。ウェブサイトは4ページ必要です。

ホームページアルバム一覧を表示して、編集、削除のリンクがあります。アルバムを新規に追加するためのリンクも用意します。
新規アルバムの追加新規アルバムを追加するフォームを表示します。
アルバムの編集アルバムを編集するフォームを表示します。
アルバムの削除アルバムを削除するかの確認画面を表示し、削除を行います。

データはデータベースに格納します。以下のフィールドを持つテーブルが一つ必要です。

Field nameTypeNull?Notes
idintegerNOPrimary key, autoincrement
artistvarchar(100)NO
titlevarchar(100)NO

アプリケーションの作成

では、アプリケーションを作成しましょう。時間と労力を減らすために、可能な限りzfコマンドラインtoolを使用します。最初の作業はプロジェクトの骨格となるファイルとディレクトリを作成します。

ターミナルかコマンドプロンプトを開いて、cdコマンドでウェブサーバのルートディレクトリに移動します。このディレクトリにファイル作成・読み込み権限があることを確認して、以下をタイプ:

zf create project zf-tutorial

ZF tool は zf-tutorial というディレクトリを作成し、推奨するディレクトリ構造でプロジェクトファイルを配置します。このディレクトリ構造はApacheの設定をあなたがコントロールできることを前提としています。そのため、ドキュメントルートディレクトリの外に大半のファイルが配置されています。以下のようなファイル、ディレクトリが見つかるはずです。

tut01

(public/ には隠しファイルである.htaccess ファイルが存在します。)

application/ ディレクトリにはこのウェブサイトのソースコードが存在しています。見ての通り、アプリケーションのモデル、ビュー、コントローラのファイルはそれぞれ別々のディレクトリにあります。

public/ ディレクトリはウェブサイトの公開ディレクトリです。つまり、アプリケーションのurlは http://localhost/zf-tutorial/public/ となります。アプリケーションのファイルのほとんどはApacheから直接アクセスできません。それ故に、よりセキュアになります。

Note: 実際のウェブサイトでは、ウェブサイトのバーチャルホストを作成し、publicディレクトリにドキュメントルートを設定します。例えば、下のようにすれば zf-tutorial.localhost というバーチャルホストを作成できます。

<VirtualHost *:80>
ServerName zf-tutorial.localhost
DocumentRoot /var/www/html/zf-tutorial/public
<Directory "/var/www/html/zf-tutorial/public">
AllowOverride All
</Directory>
</VirtualHost>

このサイトは http://zf-tutorial.localhost/ でアクセスできるようになります(/etc/hosts か c\windows\system32\drivers\etc\hosts ファイルで zf-tutorial.localhost が 127.0.0.1 にマップされていることを確認してください )。動作テストにサブディレクトリを使うほうが簡単なのでこのチュートリアルではこの作業は行いません。

画像、JavaScript、CSSファイルはpublicディレクトリ下の各ディレクトリに配置します。ダウンロードしたZend Frameworkのファイルは liblary/ ディレクトリに配置されます。別のライブラリを使う必要がある場合にもこのディレクトリに配置します。

ダウンロードしたアーカイブ(ZendFramework-1.10.6-minimal.zip)から library/Zend/ ディレクトリを zf-tutorial/library/ にコピーします。zf-tutorial/library/ は Zend/ というサブディレクトリを含むことになります。

上手くできたかどうか、 http://localhost/zftutorial/public をブラウザで開いてテストします。このように表示されるはずです。

tut02

ブートストラッピングのバックグラウンド

Zend Frameworkのコントローラはデザインパターンのフロントコントローラパターンを使っており、全てのリクエストはindex.phpファイルを通過します。これにより、アプリケーションが確実に動作する環境が整えられることが保障されます(いわゆるブートストラッピング)。これは、Zend_Tool によって生成されたzf-tutorial/public ディレクトリ内の .htaccess ファイルを使って行われます。この .htaccess ファイルは、全リクエストを public/index.php にリダイレクトさせるためのものです。これも Zend_Tool によって自動生成されます。

index.phpファイルはアプリケーションの入口です。index.phpファイルはアプリケーションの初期化のためにZend_Applicationインスタンスを生成し、起動します。このファイルには2つの定数: APPLICATION_PATH と APPLICATION_ENV が定義されています。それぞれ application/ ディレクトリとアプリケーションの環境・モードを定義しています。デフォルトではindex.phpに "production" がセットされていますが、.htaccessファイルに以下を記入して "development" をセットします。

SetEnv APPLICATION_ENV development

Zend_Applicationコンポーネントはアプリケーションの起動を行い、設定ファイル: application/configs/application.ini のディレクティブを設定します。 このファイルもZend_Toolにより自動で生成されます。 Zend_Application_Bootstrap_Bootstrapを継承したBootstrapクラスがapplication/Bootstrap.phpにあります。Bootstrapクラスは起動時に実行する必要があるコードのために使います。

application/configs ディレクトリにある application.ini ファイルは Zend_Config_Iniコンポーネントによってロードされます。Zend_Config_Iniは、例えば下のようなセクション名をコロンで区切ったセクションの継承概念を解釈します。

[staging : production]

これはstagingセクションはproductionセクションの全設定を継承していることを意味しています。APPLICATION_ENV 定数はどのセクションがロードされるかを定義しています。言うまでも無く、開発中はdevelopmentセクションが最善で、実稼動サーバー上ではproductionセクションを使うべきです。application.iniのproductionセクションに行った全ての変更は、全ての設定に反映されます。

application.iniファイルの編集

最初に行うべき変更はPHPのタイムゾーン情報についてです。application/configs/application.ini に以下を記入します。

phpSettings.date.timezone = "Europe/London"

[production]セクション内のphpSettingsの設定値の最後に追加します。言うまでもなく、あなたにとって適切なタイムゾーンを設定しましょう。これでアプリケーションのコード作成へと進むことができます。

[訳者注]日本ではタイムゾーンの設定は以下を使用します

phpSettings.date.timezone = "Asia/Tokyo"

次のページ:: Zend Framework チュートリアル その3 - アプリケーションコードの作成,データベース,モデル


目次

  1. Zend Framework チュートリアル その1 - チュートリアルの動作環境,Zend_Tool
  2. Zend Framework チュートリアル その2 - チュートリアルアプリケーション
  3. Zend Framework チュートリアル その3 - アプリケーションコードの作成,データベース,モデル
  4. Zend Framework チュートリアル その4 - レイアウトとビュー
  5. Zend Framework チュートリアル その5 - アルバムの一覧表示,最後に

deliciousdiggfacebookgooglelinkedinstumbleupontwitter

Tags: