[英]Composer vendor/ path
如網絡上任何地方所述,webroot文件夾應僅包含入口點(index.php)和資產文件夾。 應用程序源代碼必須放在上層目錄中,無法訪問。
由於我將使用同一個應用程序來管理多個域,因此我做了如下操作:
drwxrwxr-x 7 teo teo 4096 Apr 9 16:43 app
-rw-rw-r-- 1 teo teo 334 Apr 9 14:51 composer.json
-rw-rw-r-- 1 teo teo 9213 Apr 9 14:51 composer.lock
-rw-rw-r-- 1 teo teo 1965 Apr 9 13:01 deploy.ant
lrwxrwxrwx 1 teo teo 12 Apr 7 19:28 webroot2 -> app/webroot/
lrwxrwxrwx 1 teo teo 12 Apr 7 19:28 webroot3 -> app/webroot/
lrwxrwxrwx 1 teo teo 12 Apr 7 19:28 public_html -> app/webroot/
drwxrwxr-x 8 teo teo 4096 Apr 9 14:51 vendor
每個webroot文件夾只是指向文件夾app/webroot
的相對鏈接:
rwxrwxr-x 6 teo teo 4096 Apr 7 19:27 assets
-rw-r--r-- 1 teo teo 1406 Apr 9 16:02 index.php
然后,我在Composer中添加了一個軟件包( maximebf / debugbar ),我發現使它運行的唯一方法是將其資產包括在webroot中。
所以我在app/webroot
添加了一個到vendor
的鏈接:
drwxrwxr-x 6 teo teo 4096 Apr 7 19:27 assets
-rw-r--r-- 1 teo teo 1406 Apr 9 16:02 index.php
lrwxrwxrwx 1 teo teo 13 Apr 7 23:49 vendor -> ../../vendor/
我以為:如果有人可以訪問開源軟件包的源代碼,那不會有傷害...
然后我開始寫我的第一堂課,但是我不知道應該把代碼放在哪里:
app/
的子文件夾中(我計划將其放置在其中),Composer不會在自動加載器中插入其名稱空間; vendor/
子文件夾中,它將被鏈接到webroot內部。 我確定我想念什么,但我不知道是什么...
在您的公共Web文件夾中,保留系統入口文件(例如index.php)和資源(例如CSS,JS等)。
在父文件夾上,保留您的供應商/和您的應用程序/(您的課程)文件夾。
在vendor /中,您不能放任何東西,該文件夾是由composer自動生成的,因此當您更新composer時,寫在賣方中的所有代碼都可能被覆蓋,請不要修改此文件夾中的任何內容。
因此,您的目錄結構必須類似於:
現在,composer為您提供了自動裝帶器以供使用。 那么如何使用呢?
在您的composer.json文件中:
{
"require": {
"example/example": "~1.0"
},
"autoload" : {
"psr-4": {
"YourAppNamespace\\": "app"
}
}
}
所以現在讓我們打開
app/controller/myclass.php
app/model/mymodel.php
碼:
<?php
namespace YourAppNamespace\controller;
use example\example\something; // vendor/example/example/something.php
use YourAppNamespace\model\mymodel; // app/model/mymodel.php
Composer支持多種名稱空間加載。 您可以在這里找到有關該主題的更多信息: https : //getcomposer.org/doc/01-basic-usage.md#autoloading
不要忘記更改composer.json文件中的autoload部分以使其運行
php composer.phar dump-autoload
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.