Joomla.it Forum

Non solo Joomla... => Sviluppo => : Cybassh 26 Sep 2011, 10:39:20

: [risolto]Codice comune su diversi componenti
: Cybassh 26 Sep 2011, 10:39:20
Buongiorno a tutti,
  stavo riflettendo su come condividere del codice comune fra diversi componenti sulla stessa istanza di Joomla! in maniera coerente alla struttura generale. La prima soluuzione che mi viene in mente è creare una cartella a livello base dove mettere i file da richiamare, ma credo non sia la soluzione migliore.

Mi potreste cortesemente suggerire una soluzione migliore?

grazie
: Re:Codice comune su diversi componenti
: ventus85 26 Sep 2011, 11:40:06
Cosa intendi più precisamente con "codice comune" ?
: Re:Codice comune su diversi componenti
: Cybassh 26 Sep 2011, 12:01:21
intendo, per esempio, una classe, un oggetto sull' istanza corrente, i quali metodi possono essere richiamati dai diversi componenti. questo sarebbe il top per l mia problematica.
per esempio: la gestione della connessione. i componenti devono fare la connessione al db. Piuttosto che per ogni componente (ed ogni model) creare la risorsa* al db, avere la possibilita di richiamare il metodo dell'oggetto che ti fornisce questa risorsa.
ovvero ogni volta che viene istanziato un model, chiamare dall'oggetto $oggettoGenerico->daiConnessione, che ti restituisce la risorsa.
chiedo scusa se non son stato chiaro.



* $db1 =& JDatabase::getInstance($options); Dove db1 intendo risorsa
: Re:Codice comune su diversi componenti
: dazo 26 Sep 2011, 12:26:40
Ciao,
per le stesse istanze puoi usare i singleton, poi per fare il require delle classi puoi scriverti un plugin system così lo carichi all'inizio di ogni pagina.



: Re:Codice comune su diversi componenti
: mau_develop 26 Sep 2011, 18:29:58
sai che nn capisco? Più semplice di un metodo non credo esista nulla...

M.
: Re:Codice comune su diversi componenti
: mmleoni 26 Sep 2011, 21:32:41
ciao,
 se i componenti sono tra loro collegati puoi inserire la libreria in un componente e caricarla dalla cartella di questo. se i componenti non hanno tra loro relazioni salva le librerie in una cartella al di sotto di libraries ed importale con jimport (vedi doc).

ps: quando parli di oggetti (OOP) ti conviene parlare di installazioni e non di istanze di joomla, altrimenti non si capisce niente...

ciao,
marco


: Re:Codice comune su diversi componenti
: mau_develop 26 Sep 2011, 21:36:27
marco pls ..sono curioso... mi traduci anche qs?

---------------------
creare la risorsa* al db, avere la possibilita di richiamare il metodo dell'oggetto che ti fornisce questa risorsa.
ovvero ogni volta che viene istanziato un model,
------------------------------------

Cioè a che servirebbe? ..magari è qualcosa che nn so io..

M.
: Re:Codice comune su diversi componenti
: Cybassh 27 Sep 2011, 15:04:06
@mmleoni grazie mr. hai ragione di utilizzare i terminio giusti (anche per questo ho messo le mani avanti subito ). infatti gli "specialisti " di joomla qua le istallazioni le chiaman istanze, per me un'oggetto è l'istanza della relativa classe. Mi rendo conto che uno dei maggiori problemi è il glossario da utilizzare in una comunità e chiedo scusa se son stato un po' caotico.

@mau ciao, una parte di spiegazione l'ho data sopra. Risorsa è un refuso di altri linguaggi di programmazione che individuano nelle connessioni ai dbms... a differenza di puntatori, integer etc etc.
ti chiedo scusa se non so0n stato chiaro
: Re:[risolto]Codice comune su diversi componenti
: Cybassh 26 Oct 2011, 11:54:51
Ok, tutto funziona. il componente restituisce a video quello che deve fare solo che credo ho bisogno di un'altra mano per migliorare.

Cioè la libreria si chiama ghetto e contiene  una classe con diversi metodi.
Il fatto è che la istanzio su ogni model. esempio
class DocentiModelX{
...
   public function __constructor(){
      jimport('Ghetto.Ghetto');
      $gestConn= new Ghetto();
      $db1=& Ghetto::$dbConn;
      ...
   }
}

class DocentiModelY{
...
   public function __constructor(){
      jimport('Ghetto.Ghetto');
      $gestConn= new Ghetto();
      $db1=& Ghetto::$dbConn;
      ...
   }
}

come e dove posso richiamarla in maniera unica per tutti i model etc.?

Grazie