Laravel 5.7中的常量抛出已定义的错误

时间:2018-12-06 09:18:41

标签: php caching constants laravel-5.7

我在Laravel 5.7中创建了一个项目,并在config目录中创建了constants.php文件。当我尝试运行php artisan config:cache时,出现以下错误。 “ ErrorException:常数XXX_XXX已定义”

我已经将所有常量定义为define('XXXX_XXXX','bla bla');所有这些都是我的包所需的标准常量。

我已经执行以下操作:

  1. 我已经搜索了整个项目,很明显,我从未在其他地方定义过相同的项目。
  2. 如果删除该常量,则在下一个define()处显示错误。
  3. 如果我从config目录中删除文件,则artisan命令将成功执行,并且可以在bootstrap / cache目录中看到config缓存文件。但是即使我将文件粘贴回config目录中,我的程序也会由于错误(未定义常量)而中止。
  4. 如果我从bootstrap / cache目录中删除配置缓存文件,则代码将完全正常执行(我尚未运行config:cache命令)。

我非常需要此常量,并同时缓存配置以运行。我无法猜测问题所在。

注意:config/contants.php的所有内容均已定义(“ XXX”,“ xxx”);只需回显XYZ;在任何需要的地方。标准php常数。

3 个答案:

答案 0 :(得分:0)

尝试这种方式

在下面定义常量值

if (!defined('constant')) define('constant', 'value');

答案 1 :(得分:0)

我不确定它是否正确,但是它的工作方式如下:

  1. 我将constants.php从App / config /移至App /(以及其他模型)
  2. 我在“自动加载”中用

    修改了composer.json

    “文件”:[     “ app / constants.php” ]

  3. 我运行了作曲家dump-autoload

  4. 然后我运行了php artisan config:cache

它已经在引导程序中构建了新的配置文件,并且代码执行正常。

答案 2 :(得分:0)

我对此有很好的解决方案。请按照以下步骤操作:

1->在目录constantHelper.php内添加新文件app/Helpers

2->编辑文件composer.json并设置自动加载文件

{
  "autoload": {
    "files": [
      "app/Helpers/constantHelper.php"
    ]
  },
  "autoload-dev": {
    "files": [
      "app/Helpers/constantHelper.php"
    ]
  }
}

这是我在composer.json内的完整代码

{
  "name": "nurzazin/lumen",
  "description": "The Laravel Lumen Framework.",
  "keywords": [
    "laravel",
    "lumen"
  ],
  "license": "MIT",
  "type": "project",
  "require": {
    "php": "7.3.*",
    "ext-json": "*",
    "ext-openssl": "*"
  },
  "require-dev": {
    "fzaninotto/faker": "^1.4",
    "mockery/mockery": "^1.0",
    "phpunit/phpunit": "^7.0",
    "wn/lumen-generators": "^1.3"
  },
  "autoload": {
    "files": [
      "app/Helpers/constantHelper.php"
    ],
    "classmap": [
      "database/seeds",
      "database/factories"
    ],
    "psr-4": {
      "App\\": "app/"
    }
  },
  "autoload-dev": {
    "files": [
      "app/Helpers/constantHelper.php"
    ],
    "classmap": [
      "tests/"
    ]
  },
  "minimum-stability": "dev",
  "prefer-stable": true
}

3->运行命令composer installcomposer dump-autoload