1

ベンダーディレクトリにあるクラスの新しいインスタンスを作成するだけでなく、拡張したいと思います。グーグルでドキュメントを読みましたが、サポートされていません。

サードパーティクラスのアプリインポートを実行してから、拡張クラスを記述し、その後に子クラスを使用するコンポーネントを記述できますか?

すなわち

/* vendors/yahooapi/yahoo.class.php */
class YahooAPI {
     var $key = 'demo';
}

/* controllers/components/yahoo.php */
App::import("Vendor", "YahooAPI", array("file"=>"yahooapi.class.php"));

class Yahoov2 extends YahooAPI {
     var $key = 'newKey';
     function go() {}
}

YahooComponent extends Object {
     function goFaster() {
         $a = new Yahoov2;
         return $a->go() * 2;
     } 

}

4

1 に答える 1

1

基本的に、私はそれをどのように行うかを説明します(少なくともいくつかのプロジェクトでそれを行いました):

1ベンダーvendors/yahooapi/yahoo.class.phpを追加しました

2 vendors / yahooapi/の内部またはvendors/の外部にファイルを作成します。これにより、元のベンダークラスが拡張されます。たとえば、vendors/yahoov2.phpなどです。

include_once('.../vendors/yahooapi/yahoo.class.php');
class Yahoov2 extends YahooAPI {
 var $key = 'newKey';
 function go() {}
}

3最後に、コントローラーで行ったように、コンポーネントに拡張機能を含めます。

コントローラーのクラスを直接拡張することもその仕事をするだろうと私は信じていますが、それは本当に好みの問題です。

于 2010-06-25T08:12:42.147 に答える