Как я могу расширить сторонние классы в CakePHP? - PullRequest
1 голос
/ 25 июня 2010

Я хочу продлить , а не просто создать новый экземпляр класса, который я сижу в своем каталоге поставщиков. Я гуглил и читал документы, но не вижу поддержки.

Могу ли я выполнить импорт приложения из стороннего класса, а затем записать расширенный класс, за которым следует компонент, который будет использовать мой дочерний класс?

1009 * то есть *

/* 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;
     } 

}

1 Ответ

1 голос
/ 25 июня 2010

По сути, я расскажу вам, как бы я это сделал (по крайней мере, я делал это в некоторых проектах):

1 добавьте поставщиков вашего поставщика / 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 И, наконец, включите вКомпонент вашего расширения, как вы сделали в вашем контроллере.

Я считаю, что расширение класса в вашем контроллере напрямую сделало бы работу, но это действительно вопрос вкуса.

...