9

プロジェクトでZend_Tool (ZF 1.9)を使用したいのですが、新しいファイルのデフォルト出力をカスタマイズできるようにしたいと考えています。たとえば、すべてのコントローラーには、phpdoc マークアップとライセンス情報を含む特定のヘッダーを出力の前に追加して、追加の手順としてこれを追加する必要がないようにする必要があります。

また、この特定のプロジェクト(他のすべてのプロジェクトではありません)では、特定の機能のために拡張したため、デフォルトの Zend コントローラー以外のものを拡張するコントローラーが必要です。

ドキュメントは、これらのことを行う機能をほのめかしていますが、あまり明確にはしていません。

~/.zf ディレクトリ (***nix ベースのシステム上) をセットアップし、そこにカスタム プロバイダを含めることができると言うことができます。ただし、これは単一のプロジェクト スコープに限定されるのではなく、マシン全体に適用されます。また、これにより新しいプロバイダーが追加されますが、(一見)既存のプロバイダーの機能をカスタマイズすることはできません。

ここで何か助けていただければ幸いです。

4

2 に答える 2

1

本質的にジェイコブが得ていたもの:あなたが話していることは、単純なクラス拡張のように思えます。ここには、Zend Framework を拡張するための非常に簡単なスライドショーの紹介があります。

http://www.slideshare.net/PHPBelgium/extending-zend-framework-presentation

Zend Framework を拡張するためにオンラインで利用できるリソースは他にもたくさんあります。プロジェクトごとに個別のソース ツリーを作成し、さまざまなプロジェクトに共通の機能を、共通のフォルダーにある抽象クラスに追加できます。このようなことは一般的ではありませんが、次のような状況で機能することがわかりました。

class My_Component_HelloProvider extends My_Common_Component_HelloProvider
{
    public function say()
    {
        echo 'Hello from my provider!';
    }

    // public function do() is inherited

}

class My_Common_Component_HelloProvider
    implements Zend_Tool_Framework_Provider_Interface
{
    public function do()
    {
        // do something
    }
}

これがあなたがしようとしていることと異なる場合はお知らせください。ただし、ZF の単一のインスタンスから複数のアプリケーション拡張を構築できない理由はありません。

于 2009-08-21T18:13:04.087 に答える
0

特定のクラスを定義するときに、当然オーバーライドを続けることができます。ZF クラスではなく、クラスに基づいて宣言できます。

特定のプロジェクトでは、クラスパスを ZF のカスタム バージョンに変更したり、カスタム オーバーライド フォルダーを作成したりすることができます。カスタムフォルダーを使用すると、変更はマシン全体ではありませんが、zend フレームワークでもありません。***nix ベースのシステムでは、シンボリック リンクを利用して、ZF の 1 つのコピーを保持できます。

ライセンス ヘッダーと PHPdoc を含めるようにソース コードを変更しようとしていますか? もしそうなら、私が過去に行ったことは、必要な情報を追加する簡単なビルドステップです。各ファイル タイプには、適切なヘッダー情報を含めることができます。システムにファイルを無視するか、コントローラーでのみ実行するように指示するナイスタグを付けることができます。

がんばれ、ジェイコブ

于 2009-08-12T23:14:49.283 に答える