【问题标题】:Use define constant in another file在另一个文件中使用定义常量
【发布时间】:2012-03-16 10:48:41
【问题描述】:

我有一小段代码是用以前版本的 PHP(不是 5.3)编写的,我觉得解释器很奇怪将一个常量的交叉使用作为通知消息,然后最终咳出一个致命错误该常量在与报告通知的文件不同的文件中定义。 也就是说,例如我在文件A中定义了我的常量,该文件在程序启动时初始化

define('SOME_CONSTANT','something');

在文件 B.php 中

require_once('A.php');
Call-function-that-uses-fileA's-SOME_CONSTANT

报告文件 B 并带有通知消息和致命错误。

致命错误大致可以描述为

require_once() [function.require]: 需要打开失败 ....

其中“....”代表一长串包含的路径,这些路径可能与当前文件 B 相关,也可能根本不相关。我很感激您提供的任何帮助或建议。

这是因为我的代码是用旧版本编写的,而我使用了新的 PHP 版本吗?如何在不重新安装 PHP 的情况下修复这些消息?

编辑

我不想重新安装 PHP 的唯一原因是因为我不想在必须处理新项目时总是更改 PHP。现在可能老了,如果以后需要用最新的版本,重新下载新的,删掉旧的psss怎么办?

【问题讨论】:

  • 不确定这是否与您的常量有关,请检查 B.php 中的 file_exists('A.php')
  • 给定错误肯定表明解释器找不到文件 A.php。您必须检查 A.php 是否是正确的包含路径。
  • @Darcy:请查看这个问题。如果您能够解决您的问题,请将您的解决方案添加为下面的答案和/或接受其中一个答案以将您的问题标记为已解决。

标签: php constants


【解决方案1】:

我知道这是个老问题,但万一有人偶然发现它......

不幸的是,require_once('A.php'); 调用正在与文件 B.php 相同的目录中搜索 a.php 文件。如果您希望包含A.php 文件,您需要为其提供文件的完整目录路径或修改php.ini 文件的include_path 字符串以包含父目录外壳A.php

如果您不想修改 php.ini 文件,那么只需为其提供文件的完整路径即可。

@Binaek: __DIR__ 魔术变量将简单地返回 B.php 所在的完整路径,因为 a.php 文件似乎不在该目录中,否则该目录将不起作用require_once 将按原样工作。

【讨论】:

    【解决方案2】:

    您应该在所需文件上定义一个常量,例如:

    define("APPLICATION_NAME","my app");
    

    然后像这样在另一个文件中使用:

    include_once 'yourfile_with_constant_value';
    $value = APPLICATION_NAME;
    

    请注意用大写单词定义常量。

    【讨论】:

      【解决方案3】:
      require_once(__DIR___.'/A.php');
      

      __DIR__ 给出执行文件的当前目录。

      【讨论】:

        猜你喜欢
        • 2016-09-09
        • 1970-01-01
        • 2012-02-19
        • 1970-01-01
        • 1970-01-01
        • 2021-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多