繁体   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