如何在cakephp中扩展第三方类?

如何在cakephp中扩展第三方类?,cakephp,components,extending-classes,Cakephp,Components,Extending Classes,我想扩展,而不仅仅是创建我的供应商目录中的类的新实例。我在谷歌上搜索并阅读了文档,但我看不到任何支持 我是否可以导入第三方类的应用程序,然后编写扩展类,然后编写将使用我的子类的组件 i、 e }基本上,我会告诉你我将如何做(至少我在一些项目中做过): 1添加您的供应商/yahooapi/yahoo.class.php 2在vendors/yahooapi/或outside-in-vendors/中创建一个文件,该文件将扩展原始的vendor类,比如vendors/yahoov2.php i、 e

我想扩展,而不仅仅是创建我的供应商目录中的类的新实例。我在谷歌上搜索并阅读了文档,但我看不到任何支持

我是否可以导入第三方类的应用程序,然后编写扩展类,然后编写将使用我的子类的组件

i、 e


}

基本上,我会告诉你我将如何做(至少我在一些项目中做过):

1添加您的供应商/yahooapi/yahoo.class.php

2在vendors/yahooapi/或outside-in-vendors/中创建一个文件,该文件将扩展原始的vendor类,比如vendors/yahoov2.php i、 e

3并最终在组件中包含扩展,就像在控制器中一样


我相信在控制器中直接扩展类也可以完成这项工作,但这实际上是一个品味问题。

基本上,我会告诉你我将如何做到这一点(至少我在一些项目中做到了):

1添加您的供应商/yahooapi/yahoo.class.php

2在vendors/yahooapi/或outside-in-vendors/中创建一个文件,该文件将扩展原始的vendor类,比如vendors/yahoov2.php i、 e

3并最终在组件中包含扩展,就像在控制器中一样


我相信直接在控制器中扩展类也可以完成这项工作,但这实际上是一个品味问题。

CakePHP中仍然有PHP,这应该可以很好地工作。你有什么特别的问题吗?没有,只是想确定我没有做太长的事情或者任何违反蛋糕标准的事情。谢谢!CakePHP中仍然有PHP,这应该可以很好地工作。你有什么特别的问题吗?没有,只是想确定我没有做太长的事情或者任何违反蛋糕标准的事情。谢谢!如果你能让
App::import
为你的文件工作,那就太好了,否则——正如deceze所指出的那样——你可以像这里的Nik示例中所示,始终使用普通PHP。我同意App::import更像蛋糕风格,但我不确定App::import是否能在Vanders中工作。我过去做的是做App::import('Vendor','core_Vendor');应用程序::导入(“供应商”、“外部供应商”);在组件中。这实际上是一个品味问题:)在加载供应商文件时,
App
类已经加载很久了,可以在任何地方使用。只要有可能,我会选择
App::import
,因为这样可以让你在移动文件时更加灵活。如果你能让
App::import
为你的文件工作,那就太好了,否则,正如deceze指出的那样,您可以像这里的Nik示例中所示,始终使用普通PHP。我同意App::import更像蛋糕风格,但我不确定App::import是否能在Vanders中工作。我过去做的是做App::import('Vendor','core_Vendor');应用程序::导入(“供应商”、“外部供应商”);在组件中。这实际上是一个品味问题:)在加载供应商文件时,
App
类已经加载很久了,可以在任何地方使用。只要有可能,我都会选择
App::import
,因为它让您在移动文件时更加灵活。
/* 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;
     } 
include_once('.../vendors/yahooapi/yahoo.class.php');
class Yahoov2 extends YahooAPI {
 var $key = 'newKey';
 function go() {}
}