2013-10-02 8 views
13

ho usato CakePHP per un po 'e ho ancora non capisco cosa dovrebbe andare in /Lib vs /Plugin vs /Vendor. So che i plug-in sono fondamentalmente mini-app con i loro controller, ecc. Ma ci sono molte situazioni in cui tutte e tre sembrano opzioni ok. Qualcuno potrebbe far luce su questo?CakePHP: Che cosa dovrebbe andare in/lib vs/Venditore vs/Plugin

+0

http://stackoverflow.com/questions/24261432/how-to-use-common-function-in-helper-and-component-in-cakephp – trante

risposta

22

Lib

contiene librerie di partito 1 ° che non provengono da 3 parti o fornitori esterni. Ciò consente di separare le librerie interne dell'azienda dalle librerie del fornitore.

Plugin

Contiene plugin pacchetti.

Venditore

Eventuali classi terze parti o le librerie dovrebbero trovarsi qui. Facendo così è facile accedervi tramite la funzione App :: import ('venditore', 'nome'). Osservatori attenti noteranno che questo sembra ridondante, in quanto vi è anche una cartella dei venditori al livello più alto della nostra struttura . Analizzeremo le differenze tra i due quando discutiamo della gestione di più applicazioni e di configurazioni di sistema più complesse con .

Fonte: http://book.cakephp.org/2.0/en/getting-started/cakephp-folder-structure.html

Per chiarire ulteriormente, Lib è raccomandato per le librerie che si scrive da soli. Questo potrebbe essere solo alcune classi o intere librerie. Vendor è consigliato per librerie o script che è possibile scaricare da github per esempio. Plugin è strettamente per plugin framework cakephp.

Per quanto riguarda Lib rispetto a Vendor per i propri script o script di terze parti non vi è alcuna differenza di cui sono a conoscenza. Ho inserito i miei script in entrambi e script di terze parti in entrambe le posizioni e non ha fatto alcuna differenza. È solo un modo consigliato per organizzare i tuoi file.

È possibile caricare gli script da Lib o Vendor utilizzando App::import() che è lo stesso di require_once(). Per caricare i file framework o i propri script che seguono le convenzioni cakephp, utilizzare App::uses(). Questo utilizza i percorsi definiti utilizzando App::path() o App::build() per trovare i file.

+0

Grazie! Penso che la differenza sia molto più chiara. Ti dispiacerebbe aggiungere anche qualche parola sulle implicazioni della scelta di/Lib vs/Vendor? Ad esempio, roba in Venditore sarà accessibile con 'App :: import()' considerando che la roba di Lib sembra richiedere 'App :: uses()' e alcune altre configurazioni. Sono sicuro che c'è una buona ragione per cui sono implementati in modo diverso, ma non è ovvio per me. – emersonthis

+0

Non ovvio. Sembra superfluo avere entrambi. Soprattutto dato l'accesso ai file in Lib e Vendor è completamente diverso. – zmonteca