簡體   English   中英

作曲家供應商/路徑

[英]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.json
  • ...

現在,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM