41

Zend Framework での開発を開始したいと考えており、zf2 を使用したいと考えています。私は Doctrine 2 を使用しているので、zf2 に統合するのに役立つチュートリアルをいくつか提案してもらえますか? ありがとう!

4

2 に答える 2

53

前回のチェック: ZF2.2.*、DoctrineORMModule 0.7。

公式モジュール

DoctrineORMModulecomposer 経由でロードすることもできます。

  • composer.jsonの require に追加doctrine/doctrine-orm-moduleします(書式設定の問題のリスト bcs の後のコード例)
  • 走るphp composer.phar install
  • ディレクトリ./data/DoctrineORMModule/Proxyを作成し、アプリケーションの書き込みアクセスを確保します
  • /config/autoloadモジュールにプロジェクト固有の設定(データベースなど)を与えるために、アプリケーションを介してドクトリンを構成します
  • モジュールでドクトリンのエンティティ マッピングを構成するconfig.php
  • プロジェクトにエンティティを追加する
  • を追加DoctrineORMModuleDoctrineModuleconfig/application.config.php
  • cli ツールを実行してテーブルを生成します./vendor/bin/doctrine-module orm:schema-tool:create

composer を使用しないことを強くお勧めします。これは、依存関係をインストールし、オートローダーをすべてセットアップする簡単な方法だからです。また、ZF2 はデフォルトで composer 経由で出荷されます。

サンプルコード

composer.json

{  
    "require" : {  
        "php": ">=5.3.3",  
        "zendframework/zendframework": "2.*"                
        "doctrine/doctrine-orm-module": "0.*"                
    }  
}  

エンティティ設定

<?php
return array(
    'doctrine' => array(
        'driver' => array(
            // defines an annotation driver with two paths, and names it `my_annotation_driver`
            'my_annotation_driver' => array(
                'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                'cache' => 'array',
                'paths' => array(
                    'path/to/my/entities',
                    'another/path'
                ),
            ),

            // default metadata driver, aggregates all other drivers into a single one.
            // Override `orm_default` only if you know what you're doing
            'orm_default' => array(
                'drivers' => array(
                    // register `my_annotation_driver` for any entity under namespace `My\Namespace`
                    'My\Namespace' => 'my_annotation_driver'
                )
            )
        )
    )
);

注意すべき点: エンティティへのパスは完全に修飾されている必要があります。で始めるのが最善__DIR__です。そうしないと、問題が発生します(新しいプロジェクトごとに、このエラーが見つかるまでコマンドラインツールが機能しないのはなぜだろうと思います... ;)

接続設定

<?php
return array(
    'doctrine' => array(
        'connection' => array(
            // default connection name
            'orm_default' => array(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => array(
                    'host'     => 'localhost',
                    'port'     => '3306',
                    'user'     => 'username',
                    'password' => 'password',
                    'dbname'   => 'database',
                )
            )
        )
    ),
);

すべてのコード例は、公式の doctrine モジュールの readme の一部です。

参考文献:

Marco Pivetta はdoctrine-module usage について素晴らしいプレゼンテーションを行いました。このモジュールを使用しているすべての人にお勧めします。

Jason Grimes はphpdeveloper.org に掲載されているチュートリアルを書きました。公式モジュールができる前に、doctrine のインストールに役立つはずです。

于 2012-02-01T07:21:05.470 に答える
5

アップデート:

これについてもう少し調査したところ、Zend Framework 2 での Doctrine 2 のネイティブ サポートはまだ進行中のようです。このGithub Gistに注目して、進捗状況を監視することをお勧めします。

それまでの間、Michiel Staessenのリポジトリzf2-doctrine-providerを確認してください。これに関するドキュメントはまだありませんが、Bisna ライブラリが ZF 1.x でどのように機能するかを理解したら、論理的な次のステップになるでしょう。

Doctrine の ZF2 ネイティブ サポートに関する議論のほとんどが柔軟性に焦点を当てていることを知って勇気づけられました。Zend Framework で Doctrine を使用することが、どちらかまたは両方の選択ではなく、堅実で柔軟なドメイン モデルの特定の部分を構築するためのオプションになることを、私は (そして明らかに他の人も) 望んでいます。

元の投稿:

幸いなことに、ZF 1.x + Doctrine を学習するための主要なリソースのほとんどは、ZF2 への移行を考慮に入れています。ZF2 での Doctrine のネイティブ サポートについては説明していませんが、主要な原則の多くを使い始めるのに役立つはずです。

Zendcasts には、" Unit Testing Doctrine 2 Entities " で始まる優れた Doctrine 2 チュートリアル シリーズがあります。Jon L. (プレゼンター) がビデオを進めながらベスト プラクティスを取り入れ続けているので、それに続くビデオも必ず見てください。

Zend Technologies には、「Zend Framework v1 + Doctrine v2」というタイトルの決定的なウェビナーがあります。プレゼンターは、ZF2 移行に対応するためにサンプル アプリケーションをどのように構築したかについて具体的に説明します。

ZF2 のネイティブ サポートについては、まだ何も見つけていません。Rob Allen の有名なZF2 チュートリアルでは Zend\Db が使用されており、Nick Belhomme の「Zend Framework 2.0 Cookbook 」には (まだ) Doctrine が含まれていません。

頑張って始めてください。ZF2/D2 で見つけた優れたリソースを投稿してください。

于 2011-10-24T04:35:27.803 に答える