在 Laravel 应用程序中指定应用程序版本的位置在哪里?

24

我曾经在 composer.json 文件中指定应用程序的版本,直到我在 Stack Overflow 上读到这是一种不好的做法。在 PHP Laravel 应用程序中指定应用程序版本的标准文件是什么?(例如:在 .NET 中,它是配置文件,在 iOS 中,它是 info.plist,在 Android 中,它是 Manifest 等等...)


你是指开发版本和线上版本吗?如果是这样的话,你应该在项目根目录下的.env文件中进行明确的指定。 - Sven van den Boogaart
我在谈论发布版本,例如发布版 1.0.11.2.01.5.3-RC2 等。 - Christopher Francisco
2
我认为你正在寻找Git标记。http://git-scm.com/book/en/v2/Git-Basics-Tagging - Anam
到目前为止,我一直在使用标签,但我认为类似于Android/iOS/.Net源代码的某种文件存在,但我没有找到任何与Web应用程序相关的东西,所以我猜人们只使用git标签? - Christopher Francisco
4个回答

53

config/app.php绝对是这类信息的存放位置。

为什么?因为配置文件应该被纳入版本控制流程,并且它们(应该)包含有关应用程序的非敏感信息。这是一个简单版本指示器的完美位置。

在数组的name索引下,您可以设置像这样的version索引。

/*
|--------------------------------------------------------------------------
| Application Version
|--------------------------------------------------------------------------
|
| This value is the version of your application. This value is used when
| the framework needs to place the application's version in a notification
| or any other location as required by the application or its packages.
*/

'version' => '1.0.0',

这对我实际上没有起作用 - 我将其添加到我的app.php中的返回部分,但config('app.version')返回空白。如果我弄清楚了,我会添加我的答案。Laravel 5.4。 - Brettins
9
我的问题是配置缓存。php artisan config:clear 解决了问题。 - Brettins

11

@delatbabel

这是一个版本的良好开端

config/app.php

'version' => env('APP_VERSION', '1.0.0'),

针对config/bugsnag:

'app_version' => env('APP_VERSION', '1.0.0'),

然后您可以简单地通过以下方式获取您的版本:

config('app.version')

Docker

现在在Docker中,您可以在构建时设置默认版本:

ENV APP_VERSION=1.0.0

例如,使用 Circle CI ,您可以添加构建编号:
ARG BUILD_NR
ENV APP_VERSION=1.0.$BUILD_NR

现在您可以在config.yml中添加以下作业命令:
 deliver-prod:
    machine: true
    steps:
      - checkout
      - docker build --build-arg BUILD_NR=$CIRCLE_BUILD_NUM .

从容器的角度来看,环境中的应用程序版本控制是有意义的。谢谢。 - Jigar
比较 "than" 和 "then"。检查拼写。 - Jasonfish

4

我通常在 .env 文件中设置它,然后在配置文件中使用它。

例如,.env 文件内容如下:

APP_VERSION=2.1

config/app.php是这样写的:

'version' => env('APP_VERSION', '0.0.1-alpha'),

33
我认为这不是一个好选择,因为 .env 文件不应该被放入版本控制。 - lmarcelocc
那么你会把它放在哪里呢?我仍然想知道为什么Composer没有像package.json一样有一个处理这个的地方。 - Borjante

1

我的做法是:GitLab管道在每次成功构建后编写“version.php”文件。该文件的内容如下:

<?php const VERSION = '1.2.3';

在“config / app.php”中,我包含文件。
require_once __DIR__ . '/../version.php';

...

'version' => VERSION,

...

版本号可以通过以下方式查询(例如作为路由):
Route::get('api/version', function () {
   return ["version" => config('app.version')];
})
->name('version');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接