【问题标题】:Different folders for app/bootstrap/vendor in Laravel 4Laravel 4 中 app/bootstrap/vendor 的不同文件夹
【发布时间】:2016-12-02 00:42:01
【问题描述】:

目前我使用这种结构:

app/
bootstrap/
vendor/
public/

我想改成

app-2/
bootstrap-2/
vendor-2/
public/

该怎么做,我的意思是,我需要哪些文件来更改路径?

现在我试图改变路径:

公共/index.php

然后在:

bootstrap/autoload.php

bootstrap/path.php

bootstrap/start.php

基本上,我已将每个 /app/ 更改为 /app-2/ 并且对于引导程序和供应商也是如此。

但由于某种原因,从到 app/controllers 的控制器被执行而不是 app-2/controllers

任何想法,如果我缺少一些需要编辑的文件?

在调试器中我看到 vendor-2,这是正确的,但为什么从 app 而不是 app-2 文件夹加载控制器?

【问题讨论】:

  • 这不太可能奏效。完全没有。
  • 它必须工作,为什么不呢?那么为什么不对路径进行硬编码呢?
  • 如果不可能,那就太愚蠢了。这在 Laravel 5 中修复了吗?还是没有?流明呢?您可以在那里为应用程序、引导程序和供应商文件夹定义自己的名称吗?
  • Lumen 是基于 Laravel 的,所以在那里也同样困难。你想用这个完成什么?
  • 我有同一个项目的多个版本,并且 A/B 测试不同的配置/环境。但是男人……这就像心脏中的一枪。为什么会这样?我不明白。也许我最终会使用 PhalconPHP ;(

标签: laravel


【解决方案1】:

更改应用目录

要做到这一点,你需要更新你的 composer.json 文件,因为它最终决定了 Laravel 的自动加载器的行为方式。

您应该会看到与此类似的部分:

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},

改成:

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app-2/"
    }
},

这种变化意味着当自动加载器遇到App 命名空间中的任何类时,它会尝试从app-2 目录加载它。进行此更改后,您需要运行以下 CLI 命令来重新生成自动加载器的 PHP 文件:

php composer.phar dump-autoload

根据您在系统上安装 composer 的方式,该命令可能会略有不同。

更改供应商目录

您还可以将composer的包的安装路径从vendor改为vendor-2,由adding another config option改为composer.json

更改引导目录

您需要更新以下文件中对引导目录的引用:

./public/index.php
./artisan

【讨论】:

  • 谢谢,这有点复杂。很遗憾,它不能更容易地改变。你知道 CodeIgniter 或其他一些框架是否可以像我想要的那样做。
  • 老实说,您尝试做的事情非常hacky,我不会推荐它。我只是在没有意见的情况下提供了您问题的答案。如果您解释一下您这样做的确切目的,我可能会提供更清洁的解决方案来进一步提供帮助
猜你喜欢
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
  • 2018-09-28
  • 2016-03-17
  • 2014-06-15
  • 2014-07-10
  • 1970-01-01
相关资源
最近更新 更多