Integrazione tcpdf - in quale cartella copiare i files?

Vorrei includere nel mio progetto yii (o meglio, in tutti i miei progetti yii) la libreria tcpdf per la generazione di pdf.

Per il funzionamento non ho problemi, ho già letto alcuni articoli e mi sono stati molto utili ma ho alcuni dubbi riguardo la struttura delle cartelle di Yii

La domanda è questa: secondo la logica delle cartelle di Yii dove è più corretto copiare i files della libreria tcpdf?

Nella ./YiiFramework/vendors/?

Nella ./MyProject/protected/vendors/? (tra l’altro questa cartella non esiste nel progetto auto.generato da yiic, dovrei crearla)

Nella ./MyProject/protected/components/?

Sono alle prime armi con lo studio di questo bellissimo framework e ancora non mi sono chiare alcune cose. Vorrei però capirne la logica corretta.

Grazie

seguendo il forum ed alcuni progetti ho visto che la maggior parte utilizza protected/vendors, altri la cartella protected/lib .

Io ti consiglio vendors.

ciao

Grazie Markux.

Quindi ti chiedo un’altra conferma. Se copio la libreria di funzioni sotto la ./MyProject/Vendors/ posso importarla nel mio progetto aggiungendo (nel file di configurazione) una riga con




'import'=>array(

	...

	'application.vendors.tcpdf.*'

	...

),



E’ corretto?

E se volessi posizionarla cotto la ./YiiFramework/vendors/ per poterla utilizzare con tutti i progetti sullo stesso web server come dovrei importarla?

Facendo delle ulteriori ricerche e prove ho trovato una soluzione "abbastanza pulita" per fare quello che avevo in mente, cioè installare una estensione a livello di core di Yii in modo da poterla riutilizzare con tutti i progetti Yii sullo stesso web server.

Vorrei condividerla con voi nel caso possa tornare utile a qualcuno oppure per muovere critiche e suggerimenti (che sono sempre ben accetti).

Scenario: devo integrare un’estensione di terze parti con Yii (in questo caso tcpdf) e referenziarla per poterla utilizzare con tutti i progetti. Voglio inoltre referenziare inoltre il nome della sua classe principale (class TCPDF) con l’utilizzo di Class Map

1 - Copio la cartella contenente i files dell’estensione tcpdf sotto ./YiiFramework/vendors/tcpdf/

2 - Nel file di configurazione (main.php) aggiungo un percorso per l’import




 'import'=>array(

    'system.vendors.tcpdf.*',

 ),



3 - nel file index.php aggiungo il seguente spezzone di codice (questo codice va messo tra require_once($yii); e Yii::createWebApplication($config)->run();)




 Yii::$classMap=array(

	'TCPDF'=>'tcpdf.php',

 );



Mi è appena venuto un dubbio. Ma è possibile mettere le estensioni dentro yii e non dentro alla singola applicazione? Mi spiego: se ho 10 siti web che usano TinyMCE, estendo i 10 siti o metto l’editor direttamente dentro a Yii?

Poi: che problemi possono saltare fuori? A me in questo momento viene in mente l’aggiornamento. Quando aggiorno basta che ricopio le estensioni?

Ciao Sensorario, è proprio quello che ho fatto.

Ho copiato la mia estensione nella cartella vendors della Yii (quella che io ho chiamato YiiFramework e che contiene il framework Yii) e, da ogni applicazione, punto a questa. Mi vengono in mente questi vantaggi/svantaggi di utilizzare questa configurazione:

[i][b]

[/b][/i]Vantaggi

  • Copio l’estensione una sola volta. Se avessi 10 applicazioni dovrei copiare la stessa estensione nei folder di ogni applicazione (sempre che mi serva utilizzarla in tutte)

  • Se devo aggiornare l’estensione basta che la aggiorno una volta sola e l’aggiornamento verrà apportato su tutte le applicazioni che puntano a questa cartella

Svantaggi

  • Se devo aggiornare la nuova versione di Yii mi devo ricordare di copiare tutte le estensioni precedentemente integrate altrimenti non funzionerà in nessuna applicazione.

Hai fatto bene a farmi notare questa cosa. Devo segnarmi tutte le modifiche che faccio alla Yii in previsione di un futuro cambio di versione. Sicuramente mi dimenticherò qualcosa…