Как я могу расширить сторонние классы в CakePHP?
Я хочу расширить, а не просто создать новый экземпляр класса, который у меня есть, в моем каталоге поставщиков. Я гуглил и читал документы, но не вижу в этом никакой поддержки.
Могу ли я выполнить импорт приложения из стороннего класса, а затем записать расширенный класс, за которым следует компонент, который будет использовать мой дочерний класс?
т.е.
/* 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 добавьте своих поставщиков / 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 И, наконец, включите в компонент ваше расширение, как вы это сделали в своем контроллере.
Я верю, что расширение класса в вашем контроллере напрямую поможет, но это действительно дело вкуса.