Yii2环境文件夹背后的想法是什么以及如何使用它?

时间:2014-12-18 08:54:34

标签: yii2 yii2-advanced-app

我已多次阅读Yii2文档。我也用Google搜索,但我找不到任何有用的东西。

问题是我不了解环境文件夹的概念。请让我解释一下:

  1. 我可以在Git中使用分支(用于开发,登台和制作)
  2. * - local.conf 文件被Git忽略,无论如何都不会被推送到升级或生产
  3. 为什么我必须在环境/ dev &中复制我的所有控制器,视图和其他文件。的环境/ PROD

    我实际需要在哪些文件夹中进行开发?

    环境文件夹的部署过程是什么?我每次将更改推送到生产服务器后都应该调用 init 吗?

2 个答案:

答案 0 :(得分:18)

除非您有非常具体的需要,否则您很可能会忽略环境文件夹。

您的所有代码都应该放入commonfrontendconsolebackend个文件夹。 common appart,这些是应用程序的默认可用入口点,您可以在其中放置控制器逻辑。您显然不必全部使用它们,只需使用frontend就可以满足您的具体需求。

但是如果您选择高级模板,则可能会再次使用组合......比如说commonbackendfrontend

环境文件夹

环境文件夹对应于运行./init时的选项。这就是名字:

  • 0)开发
  • 1)制作

它们包含运行./init命令时编辑和/或添加的所有文件。这些包括VCS(git)忽略(因此从未创建)的所有文件。

我们正在谈论像 * - local.php 这样的文件,出于显而易见的原因,这些文件永远不应该被版本化。但是,根据您正在初始化的环境而改变的条目脚本也是如此。例如,您希望在生产中调试和注销,但在开发中。这些是您无法在配置文件级别设置的内容,因为它们需要在Yii应用程序模型之前设置,或者您知道每次初始化环境时都需要默认设置。

您可以想象添加另一个名称为预生产的环境,例如,除了启用日志记录之外,它会像生产环境一样初始化您的应用程序。为此,您将复制environments/prod文件夹,根据需要修改条目脚本,并在environments/index.php中添加选项。

克隆分支后,只需要运行./init一次。如果您对CI很重要,那么您的CI服务器可能需要在每次运行时运行./init脚本。这可能取决于您如何配置它。如果您对要应用的环境文件夹进行了更改,则需要再次运行它。

common,console和* ends

这可能你已经知道但只是因为有人在想。

  • common:包含所有应用程序通用的逻辑,从配置文件到模型
  • 前端:与您的前端Web界面相关的所有内容,也可以拥有自己的模型等。
  • 后端:与上述相同,但允许在前端和后端应用程序之间使用单独的逻辑。
  • console:用于通过./yii controller/action
  • 命令行访问您的应用

这通常是所有魔法发生的地方,不需要复制任何代码。

答案 1 :(得分:0)

首先,您不需要在环境文件夹中放置控制器和视图。 environment文件夹包含包含不同环境的不同配置的文件。

例如,在frontend/web/index.php文件中,您希望在生产环境中将YII_ENV设置为prod,而在开发环境中设置为dev。在environment文件夹中,此文件已在特定文件夹中的特定设置中可用。

正如Here所解释的那样,您需要做的就是运行init命令并选择您的环境,它会将特定于环境的文件放在适当的位置。