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

}

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top