【问题标题】:PHP Notice: Constant FLD_EMAIL already defined laravelPHP 注意:常量 FLD_EMAIL 已经定义 laravel
【发布时间】:2017-04-04 12:43:05
【问题描述】:

我在 laravel 的 conifg 目录中创建了一个名为 db-constant.php 的文件,该文件包含我的常量,然后我在 app.php 中添加了这一行 require_once 'db-constants.php'; ,问题是我在哪里输入 php artisan cache:clear 或任何命令将出现此消息

PHP 通知:常量 FLD_EMAIL 已在 /var/www/html/test/config/db-constants.php 第 1 行中定义

我该如何解决这个问题?

【问题讨论】:

  • 您究竟为什么要添加require_once?你读过 Laravel 的文档吗?只需将文件添加到config/ 目录就足够了,你不需要任何东西。
  • 这里有几件事,首先是包含文件的方法stackoverflow.com/questions/17159046/…
  • 其次,为什么常量文件不同?
  • @mjh 因为当我部署我的项目时,会出现未定义的常量消息
  • @wahdan 你不需要 常量。我写了一个答案,我可以告诉你没有阅读有关 Laravel 配置的任何内容 - 我建议你阅读。

标签: php laravel


【解决方案1】:

如果您使用Laravel,则不必使用require_once 或其对应物。 composer的自动加载用于一切,配置文件自动加载。您需要做的是阅读有关配置的文档,将文件放在 config/ 目录中并返回带有配置值的 array

现在,(对我来说)似乎是出于某种奇怪的原因,您想使用常量而不是 Laravel 访问配置值的机制。在这种情况下,您:

1.) 不要在config/ 目录中放置任何东西

2.) 不要手动 require_once 任何东西

3.) 请使用 Composer 的自动加载功能

如何在 Laravel 中加载带有常量的文件

1.) 创建app/MyConstants 目录。

2.) 创建你的文件,我们称之为constants.php。路径是: app/MyConstants/constants.php

3.) 添加您的 define 代码

4.) 打开composer.json

5.) 查找"autoload"

6.) 在"autoload" 下查找"files"。如果不存在,则创建它。

7.) 添加要自动包含的文件列表

composer.json 中的 "autoload" 应如下所示:

"autoload": {
  "files": ["app/MyConstants/constants.php"]
}

在终端中,输入 composer ducomposer dump-autoload。它将重新创建自动加载器并自动将文件包含在您的常量中。

删除bootstrap/cache,以便您可以再次使用artisan

现在你可以:

1.) 有一个可以定义常量的地方

2.) 避免手动要求文件

就个人而言,我看不出这是什么原因,但话又说回来 - 我只是一个人,我对宏伟计划中的任何事情一无所知 :)

【讨论】:

  • 这是真的。遵循文档是一种理想的方式。
【解决方案2】:

您需要先阅读此文档https://laravel.com/docs/5.4/configuration。以及 Laravel 的其余文档。如何使用配置文件:

  1. 在配置目录中创建您自己的文件db-constant.php
  2. 根据需要填写。例如

    return [
    
        'FLD_EMAIL' => 'your-field-here',
    
    ];
    
  3. 在需要的地方使用它

    $email = config('db-constant.FLD_EMAIL');
    

就是这样。

【讨论】:

    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    相关资源
    最近更新 更多