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