5

Zend_Tool は素晴らしいです。指定された名前と指定されたパスでプロジェクトを生成します。

しかし、しばらくして、ヘルパー、プラグイン、バリデーターなどの独自のツールを開発し始めました...

私はそれらをすべてライブラリに入れました。これは問題ありません(そして推奨されます)。

しかし、プラグイン、ヘルパー、変換オブジェクト、db オブジェクトなどの初期化を含め、同じブートストラップ ファイルでプロジェクトを開始する必要があります。

一部は application.ini で実行できます。

次に、独自の一般的なapplication.ini、ブートストラップ内の初期化コード、おそらくディレクトリなどを記述できるようにしたいと思います...

何を/どのようにしますか?

4

3 に答える 3

3

解決策の1つは、library / zend / Tool / Project / Context / Zf内のファイルを編集することだと思います。これらのファイルは、すぐに使用できるプロジェクトに使用されるコンテンツ/構造を提供しているようです。

しかし、それは正しい解決策のようには思えません。さらに、進行中の調査で、ツール(zf.batまたはsh)がphp inculde_path上のすべてのディレクトリをスキャンして、ツールの機能を提供する「マニフェスト」と「プロバイダー」を探していることをすでに知っています。

Zend開発者の1人による開発者向けのZend_Toolの記事で、いくつかのことが明らかになりました。

マニフェスト

必要な数のプロバイダーをバンドルして「ロード」するために使用できます。

プロバイダー

プロバイダーは、使用するCLIコマンドの実際のコンテナーであり、設計は「コントローラー/アクション」の設計に似ています。次を呼び出すことにより、コマンドプロンプトから特定のクラス(コントローラー)のメソッド(アクション)を呼び出すことができます。

zf <method-name> <class-name>

このクラスがZend_Tool_Project_Provider_Abstractを拡張する場合

その後、すぐに使用できるレイアウトの設定をプロバイダーに任せるマニフェストが次の場所にあることがわかりました。

library \ Zend \ Tool \ Project \ Provider \ Manifest.php

このファイルでは、次のプロバイダーがツールに返されます。

public function getProviders()
{
    return array(
        new Zend_Tool_Project_Provider_Profile(),
        new Zend_Tool_Project_Provider_Project(),
        new Zend_Tool_Project_Provider_Controller(),
        new Zend_Tool_Project_Provider_Action(),
        new Zend_Tool_Project_Provider_View(),
        new Zend_Tool_Project_Provider_Module(),
        new Zend_Tool_Project_Provider_ProjectProvider()
    );
}

これらは明らかに利用可能なデフォルトのCLIコマンドです。

さらに、メソッド_getDefaultProfile()のlibrary / Zend / Tool / Project / Provider / Projectにデフォルトで作成される独自のxmlプロジェクトプロファイルを提供することで、作成内容に大きな影響を与えることができることも明らかです。

私が今試していること

  • デフォルトのプロバイダーとデフォルトのマニフェストを自分のものでオーバーライドし、自分のプロジェクトプロバイダーで_getDefaultProfile()をオーバーライドして、いくつかのものをfalseではなくtrueに設定します。

CLIがプロバイダーを受け入れないという問題が発生しています。進捗状況を報告します!

于 2009-09-26T22:39:31.977 に答える
0

モジュールは、プロジェクト レベルでコードを再利用するために使用できます。

http://framework.zend.com/manual/en/zend.controller.modular.html

既存のプロジェクトと機能が似ている新しいプロジェクトがある場合は、既存のプロジェクトに新しいモジュールを追加し、application.ini ファイルで特定のモジュールをオン/オフにすることができます。モジュール固有の初期化は、独自の Bootstraps に含めることができます。

しかし、それは完全に単純ではありません...

数か月前に試したとき、Zend_Tool はモジュール ディレクトリ構造の作成に問題があり、手動で作成する必要がありました。また、必要な機能 (モジュール固有の構成ファイル、マージされたナビゲーション定義、および/または特定の展開構成) は、現在 Zend Framework に組み込まれておらず、作成する必要があります。

私のセットアップでは、デプロイメントごとに application.ini があります (application-foo.ini、application-bar.ini)。.htaccess ファイルに設定された環境変数 (SetEnv APP_DEPLOYMENT foo) を使用して、ブートストラップ (index.php) のカスタム ロジックを介して適切な ini ファイルが選択されます。モジュールの一般的な構成は、モジュール固有の構成ファイルに入れられ、Zend_Application_Resource_Modules のカスタム サブクラスを介して読み込まれます。

サイトによっては、デプロイ プロセスを実行して、不要なモジュール、パブリック ファイル、ライブラリを除外することができます。Phing、Capistrano、または Ant が適しています。

于 2009-09-04T03:48:05.933 に答える
0

必要に応じて、zend ツール クラスを拡張できます。class Boostrap extends Zend_Application_Boostrap_Bootstrapしかし、たとえばライブラリに独自の Bootstrap クラスを用意し、生成されたものを次のように変更する方が良いと思いますextends My_Bootstrap

于 2009-09-03T15:17:05.207 に答える