<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 24249 -->
<sect1 id="zend.application.quick-start">
    <title>Zend_Application クイックスタート</title>

    <para>
        <classname>Zend_Application</classname>で始める方法は2つあります、
        そして、それらはプロジェクトを始める方法によって決まります。
        いずれにせよ、どの場合も、<classname>Bootstrap</classname>クラスと関連する
        構成ファイルを作成することから始めます。
    </para>

    <para>
        プロジェクトを作成するために<classname>Zend_Tool</classname>を使う予定なら、
        引き続き、下記をご覧下さい。
        <classname>Zend_Application</classname>を既存のプロジェクトに追加するなら、
        <link linkend="zend.application.quick-start.manual">読み飛ばして先に進み</link>たいことでしょう。
    </para>

    <sect2 id="zend.application.quick-start.zend-tool">
        <title>Zend_Toolの利用</title>

        <para>
            <classname>Zend_Application</classname>を使い始めるために最も早い方法は、
            プロジェクトを生成するために<classname>Zend_Tool</classname>を使うことです。
            これにより、<classname>Bootstrap</classname>クラスやファイルも生成されます。
        </para>

        <para>
            プロジェクトを作成するために、(*nix システムで)<command>zf</command>コマンドを実行してください:
        </para>

        <programlisting language="sh"><![CDATA[
% zf create project newproject
]]></programlisting>

        <para>
            またはWindowsの<filename>zf.bat</filename>コマンド:
        </para>

        <programlisting language="dos"><![CDATA[
C:> zf.bat create project newproject
]]></programlisting>

        <para>
            共に、下記のようなプロジェクト構造を作成します:
        </para>

        <programlisting language="text"><![CDATA[
newproject
|-- application
|   |-- Bootstrap.php
|   |-- configs
|   |   `-- application.ini
|   |-- controllers
|   |   |-- ErrorController.php
|   |   `-- IndexController.php
|   |-- models
|   `-- views
|       |-- helpers
|       `-- scripts
|           |-- error
|           |   `-- error.phtml
|           `-- index
|               `-- index.phtml
|-- library
|-- public
|   `-- index.php
`-- tests
    |-- application
    |   `-- bootstrap.php
    |-- library
    |   `-- bootstrap.php
    `-- phpunit.xml
]]></programlisting>

        <para>
            上記の図の中で、ブートストラップは<filename>newproject/application/Bootstrap.php</filename>にあり、
            最初は以下のように見えます:
        </para>

        <programlisting language="php"><![CDATA[
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}
]]></programlisting>

        <para>
            構成ファイル、<filename>newproject/application/configs/application.ini</filename>にも気付くでしょう。
            それは下記のような内容です:
        </para>

        <programlisting language="dosini"><![CDATA[
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
]]></programlisting>

        <para>
            この構成ファイルの設定は全て、
            <classname>Zend_Application</classname>及びブートストラップで利用するためのものです。
        </para>

        <para>
            他に興味を惹くファイルは
            <filename>newproject/public/index.php</filename>で、
            それは<classname>Zend_Application</classname>を呼び出してディスパッチします。
        </para>

        <programlisting language="php"><![CDATA[
// アプリケーション・ディレクトリへのパスを定義します
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH',
              realpath(dirname(__FILE__) . '/../application'));

// アプリケーション環境を定義します
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV',
              (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
                                         : 'production'));

/** Zend_Application */
require_once 'Zend/Application.php';

// アプリケーション及びブートストラップを作成して、実行します
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
            ->run();
]]></programlisting>

        <para>
            クイックスタートを続けるには、
            <link
            linkend="zend.application.quick-start.resources">リソース節まで読み飛ばし</link>てください。
        </para>
    </sect2>

    <sect2 id="zend.application.quick-start.manual">
        <title>アプリケーションにZend_Applicationを追加する</title>

        <para>
            <classname>Zend_Application</classname>の基本は本当に単純です:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <classname>Bootstrap</classname>クラスを持つ
                    <filename>application/Bootstrap.php</filename>ファイルを作成します。
                </para>
            </listitem>

            <listitem>
                <para>
                    <classname>Zend_Application</classname>に必要な基本的な設定を持つ構成ファイル、
                    <filename>application/configs/application.ini</filename>を作成します。
                </para>
            </listitem>

            <listitem>
                <para>
                    <classname>Zend_Application</classname>を利用するために、
                    <filename>public/index.php</filename>を変更します。
                </para>
            </listitem>
        </itemizedlist>

        <para>
            初めに、<classname>Bootstrap</classname>クラスを作成します。
            <filename>application/Bootstrap.php</filename>ファイルを下記の内容で作成します。
        </para>

        <programlisting language="php"><![CDATA[
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}
]]></programlisting>

        <para>
            次に、構成を作成します。
            このチュートリアルでは<acronym>INI</acronym>形式の構成を使います;
            もちろん、<acronym>XML</acronym>、<acronym>JSON</acronym>、<acronym>YAML</acronym>や
            <acronym>PHP</acronym>構成ファイルも同様に利用できます。
            <filename>application/configs/application.ini</filename>ファイルを作成して、
            下記の内容にしてください:
        </para>

        <programlisting language="dosini"><![CDATA[
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
]]></programlisting>

        <para>
            次に入り口となるスクリプト、<filename>public/index.php</filename>を変更しましょう。
            もしファイルが存在しなければ、作成してください;
            さもなければ、下記の内容でファイルを置き換えてください:
        </para>

        <programlisting language="php"><![CDATA[
// アプリケーション・ディレクトリへのパスを定義します
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH',
              realpath(dirname(__FILE__) . '/../application'));

// アプリケーション環境を定義します
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV',
              (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
                                         : 'production'));

// 一般的に、library/ ディレクトリーをinclude_pathに追加したいでしょう
// 特にそれがインストールしたZFを含むならば
set_include_path(implode(PATH_SEPARATOR, array(
    dirname(dirname(__FILE__)) . '/library',
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// アプリケーション及びブートストラップを作成して、実行します
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
            ->run();
]]></programlisting>

        <para>
            アプリケーション環境定数が環境変数 "APPLICATION_ENV" を探すことに気づくかもしれません。
            我々は、これをウェブサーバ環境で設定することを勧めます。
            Apacheでは、vhost定義、または、<filename>.htaccess</filename>ファイルのいずれかで設定できます。
            我々は、<filename>public/.htaccess</filename>ファイルとして以下の内容を推奨します:
        </para>

        <programlisting language="conf"><![CDATA[
SetEnv APPLICATION_ENV development

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
]]></programlisting>

        <note>
            <title>mod_rewriteについて学ぶ</title>

            <para>
                上記の書き換えルールでは、バーチャル・ホスト・ドキュメント・ルートの配下の
                どのファイルでもアクセスが許可されます。
                このように公開されたくないファイルがあるならば、より限定的なルールにしたいかもしれません。
                <ulink
                    url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">mod_rewriteについてより学ぶ</ulink>
                ためにはApache ウェブサイトを訪れてください。
            </para>
        </note>

        <para>
            ここまでで、
            <classname>Zend_Application</classname>をすっかり利用し始められるようになっています。
        </para>
    </sect2>

    <sect2 id="zend.application.quick-start.resources">
        <title>リソースの追加と作成</title>

        <para>
            上記の手引きに従うと、ブートストラップ・クラスはフロントコントローラを利用します。
            そして、それが動くとき、フロントコントローラをディスパッチします。
            しかし、おそらく、これより少し多くの構成を必要とするでしょう。
        </para>

        <para>
            この節では、アプリケーションにリソースを２つ追加することに目を向けましょう。
            最初に、レイアウトを準備して、ビュー・オブジェクトをカスタマイズします。
        </para>

        <para>
            <classname>Zend_Application</classname>で提供される標準的なリソースのうちの1つは、
            「レイアウト」リソースです。
            このリソースでは、<classname>Zend_Layout</classname>インスタンスを構成するために使う構成値を
            あなたが定義することをあてにしています。
        </para>

        <para>
            これを使うためにすべきことは、構成ファイルを更新することです。
        </para>

        <programlisting language="dosini"><![CDATA[
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
; ADD THE FOLLOWING LINES
resources.layout.layout = "layout"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
]]></programlisting>

        <para>
            もしまだ無ければ、
            <filename>application/layouts/scripts/</filename>ディレクトリ、
            及びそのディレクトリ内に<filename>layout.phtml</filename>ファイルを作成してください。
            以下の通りで、レイアウトを良く始められます。
            （そして、それは次に含まれるビュー・リソースと結びつきます）:
        </para>

        <programlisting language="php"><![CDATA[
<?php echo $this->doctype() ?>
<html>
<head>
    <?php echo $this->headTitle() ?>
    <?php echo $this->headLink() ?>
    <?php echo $this->headStyle() ?>
    <?php echo $this->headScript() ?>
</head>
<body>
    <?php echo $this->layout()->content ?>
</body>
</html>
]]></programlisting>

        <para>
            ここまでで、レイアウトを役立てられるようになっています。
        </para>

        <para>
            次に、カスタム・ビューリソースを追加します。
            ビューを初期化する際に、
            <acronym>HTML</acronym> DocType及び
            <acronym>HTML</acronym>の head で使用するタイトルのデフォルト値を設定を希望します。
            これは、メソッドを追加する<classname>Bootstrap</classname>クラスを編集することにより成就できます:
        </para>

        <programlisting language="php"><![CDATA[
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initView()
    {
        // ビューを初期化します
        $view = new Zend_View();
        $view->doctype('XHTML1_STRICT');
        $view->headTitle('My First Zend Framework Application');

        // それを ViewRenderer に追加します
        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
            'ViewRenderer'
        );
        $viewRenderer->setView($view);

        // ブートストラップで保存できるように返します
        return $view;
    }
}
]]></programlisting>

        <para>
            このメソッドはアプリケーションを起動する際に自動的に実行されて、
            アプリケーションの必要性に従ってビューが初期化されることを確実にします。
        </para>
    </sect2>

    <sect2 id="zend.application.quick-start.next-steps">
        <title>Zend_Applicationを使った次のステップ</title>

        <para>
            上記は、<classname>Zend_Application</classname>で始めるようにさせるべきです。
            そして、アプリケーション・ブートストラップを作成しだすべきです。
            ここから、リソース・メソッドや、再利用性を最大にするために、リソース・プラグイン・クラスを作成し始めるべきです。
            より学ぶために、引き続きご覧下さい！
        </para>
    </sect2>
</sect1>
