come faccio esteso classi 3a parte in CakePHP?
-
29-09-2019 - |
Domanda
Voglio estendere , non solo creare una nuova istanza di una classe che ho seduto nella mia directory fornitori. Ho cercato su google e leggere i documenti, ma non vedo alcun supporto per esso.
Posso fare un import applicazione della classe 3a parte, quindi scrivere la classe estesa seguito da un componente che utilizzerà la mia classe bambino?
cioè
/* 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;
}
}
Soluzione
In sostanza, vi dirò come vorrei farlo (almeno ho fatto in alcuni progetti):
1 Aggiungi il fornitore fornitori / yahooapi / yahoo.class.php come avete fatto
2 crea un file all'interno del vendor / yahooapi / o al di fuori di fornitori / che si estenderà la classe fornitore originale diciamo fornitori / yahoov2.php cioè
include_once('.../vendors/yahooapi/yahoo.class.php');
class Yahoov2 extends YahooAPI {
var $key = 'newKey';
function go() {}
}
3 E infine includere nella componente proprio interno come avete fatto nel vostro controller.
Credo che anche estendendo la classe nel controller direttamente farebbe il lavoro, ma è davvero una questione di gusti.