# ページ・ファクトリを使ってページを作成

すべてのページ（また、カスタマイズしたクラス）を、 ページ・ファクトリ `Zend_Navigation_Page::factory()` を用いて 作成できます。 ファクトリは任意の配列、 または`Zend_Config`オブジェクトをとることができます。 ページの節でご覧いただけるように、 配列または構成の各々のキーはページ・オプションと一致します。 `uri`が与えられ、MVCオプション (`action, controller, module, route`) が与えられないなら、 URIページが作成されます。 MVCオプションのいずれかが与えられると、 MVCページが作成されます。

`type`が与えられると、 ファクトリは、その値が作成されるべきであるクラスの名前であると仮定します。 If the value is `mvc` or `uri` and MVC/URI page will be created.

## ページ・ファクトリを使ってMVCページを作成

    $page = Zend_Navigation_Page::factory(array(
        'label'  => 'My MVC page',
        'action' => 'index'
    ));

    $page = Zend_Navigation_Page::factory(array(
        'label'      => 'Search blog',
        'action'     => 'index',
        'controller' => 'search',
        'module'     => 'blog'
    ));

    $page = Zend_Navigation_Page::factory(array(
        'label'      => 'Home',
        'action'     => 'index',
        'controller' => 'index',
        'module'     => 'index',
        'route'      => 'home'
    ));

    $page = Zend_Navigation_Page::factory(array(
        'type'   => 'mvc',
        'label'  => 'My MVC page'
    ));

## ページ・ファクトリを使ってURIページを作成

    $page = Zend_Navigation_Page::factory(array(
        'label' => 'My URI page',
        'uri'   => 'http://www.example.com/'
    ));

    $page = Zend_Navigation_Page::factory(array(
        'label'  => 'Search',
        'uri'    => 'http://www.example.com/search',
        'active' => true
    ));

    $page = Zend_Navigation_Page::factory(array(
        'label' => 'My URI page',
        'uri'   => '#'
    ));

    $page = Zend_Navigation_Page::factory(array(
        'type'   => 'uri',
        'label'  => 'My URI page'
    ));

## ページ・ファクトリを使ってカスタムページ型を作成

ページ・ファクトリを使ってカスタムページ型を作成するには、 インスタンス化するクラス名を指定するために、 `type`オプションを使ってください。

    class My_Navigation_Page extends Zend_Navigation_Page
    {
        protected $_fooBar = 'ok';

        public function setFooBar($fooBar)
        {
            $this->_fooBar = $fooBar;
        }
    }

    $page = Zend_Navigation_Page::factory(array(
        'type'    => 'My_Navigation_Page',
        'label'   => 'My custom page',
        'foo_bar' => 'foo bar'
    ));