1

我想扩展,而不仅仅是创建一个我坐在供应商目录中的类的新实例。我用谷歌搜索并阅读了文档,但我没有看到对它的支持。

我可以对第 3 方类进行应用程序导入,然后编写扩展类,然后编写将使用我的子类的组件吗?

IE

/* 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 像您一样添加您的供应商 vendor/yahooapi/yahoo.class.php

2在vendors/yahooapi/或vendors/外部创建一个文件,这将扩展原始的vendor类,比如说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 回答