2013-10-02 8 views
13

Ich habe für eine Weile CakePHP benutze und ich noch nicht wirklich verstehen, was in /Lib vs /Plugin vs /Vendor gehen sollte. Ich weiß, dass Plugins im Grunde Mini-Apps mit ihren eigenen Controllern usw. sind. Aber es gibt viele Situationen, in denen alle drei als ok erscheinen. Könnte jemand etwas Licht darauf werfen?CakePHP: Was/Lib vs/Vendor vs/Plugin geht in sollte

+0

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

Antwort

22

Lib

Enthält 1. Party-Bibliotheken, die von dritten Parteien oder externen Lieferanten nicht kommen. Auf diese Weise können Sie die internen Bibliotheken Ihrer Organisation von den Herstellerbibliotheken trennen.

Plugin

Enthält plugin Pakete.

Anbieter

Allfällige Dritt Klassen oder Bibliotheken hier platziert werden soll. Dies erleichtert den Zugriff über die Funktion App :: import ('Hersteller', 'Name'). Keen Beobachter werden bemerken, dass dies redundant scheint, wie es auch einen Lieferanten-Ordner auf der obersten Ebene unseres Verzeichnisses Struktur gibt. Wir werden auf die Unterschiede zwischen den beiden eingehen, wenn wir die Verwaltung mehrerer Anwendungen und komplexerer System-Setups besprechen.

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

weiter Um zu klären, ist Lib für Bibliotheken empfohlen, die Sie selbst schreiben. Dies können nur ein paar Klassen oder ganze Bibliotheken sein. Vendor wird für Bibliotheken oder Skripts empfohlen, die Sie beispielsweise von github herunterladen können. Plugin ist ausschließlich für cakephp Framework Plugins.

In Bezug auf Lib vs Vendor für Ihre eigenen Skripte oder 3rd Party Skripte gibt es keinen Unterschied, den ich kenne. Ich habe meine eigenen Skripte sowohl in Skripten von Drittanbietern als auch von Drittanbietern an beiden Orten installiert und es hat keinen Unterschied gemacht. Es ist nur eine empfohlene Methode, um Ihre Dateien zu organisieren.

Sie können Ihre Skripte von Lib oder Vendor mit App::import() laden, was dasselbe ist wie require_once(). Um Framework-Dateien oder eigene Skripte zu laden, die den CakePHP-Konventionen folgen, würden Sie App::uses() verwenden. Dies verwendet die Pfade, die mit App::path() oder App::build() definiert wurden, um die Dateien zu finden.

+0

Danke! Ich denke, der Unterschied ist viel klarer. Würde es Ihnen etwas ausmachen, ein paar Worte über die Implikationen der Wahl von/Lib vs/Vendor hinzuzufügen? Zum Beispiel wird auf Sachen in Vendor mit 'App :: import()' zugegriffen, während Lib-Sachen scheinbar 'App :: uses()' und einige andere Konfigurationen benötigen. Ich bin sicher, dass es einen guten Grund gibt, warum sie anders umgesetzt werden, aber es ist für mich nicht offensichtlich. – emersonthis

+0

Nicht offensichtlich. Es erscheint überflüssig, beides zu haben. Vor allem beim Zugriff auf Dateien in Lib und Vendor ist völlig anders. – zmonteca