【问题标题】:My code doesnt read the defined constants in PHP我的代码没有读取 PHP 中定义的常量
【发布时间】:2011-01-14 19:32:34
【问题描述】:

大家好 我有一个使用 PHP 的项目,它分为管理部分和客户端部分。

客户端 ecd 运行良好。但我无法访问我的管理部分,它显示错误说

致命错误:在第 30 行的 E:\wamp\www\dfms\admin\index.php 中找不到类“ClsBase”

更新

第 28 行是$base_obj = new ClsBase();

更新1

第 14 行:include_once(ADMIN_CLASS_DIR ."ClsAdminUser.php");

但我已经在adminconfig.php 中定义了所有常量,并且我使用常量来提供该文件的路径以及该文件存在于所需文件夹中的路径

你能帮我看看有什么问题吗?

【问题讨论】:

  • 你能发布代码吗?如果打印 const 会显示什么?
  • 所以登录文件位于 E:\wamp\www\dfms\admin\login.php 以外的其他位置...请发布调用该文件的 PHP 代码。
  • 它只是打印我“ADMIN_CLASS_DIR”
  • 如果 const 没有设置,这正是你会得到的。如果 const 不可用,PHP 假定它是一个字符串。但是你应该得到一个通知(/警告不知道是哪一个)。
  • 我喜欢这些害怕展示代码的用户。伙计们,我们需要代码,或者我们应该如何解决这个问题?猜?此外,错误在第 30 行,而您在第 28 / 14 行发布?好的,我可以猜到第 30 行是什么,但是!没有人会窃取你的代码!

标签: php constants


【解决方案1】:

没有看到代码,很难判断。有两个可能的问题。

  1. ADMIN_CLASS_DIR 未设置,因此 PHP 将发出 notice 并默认为 ADMIN_CLASS_DIR。您的代码如下所示:

     include_once(ADMIN_CLASS_DIR . 'ClsAdminUser.php');
    

    要修复它,只需定义目录:

     if (!defined('ADMIN_CLASS_DIR')) {
         define('ADMIN_CLASS_DIR', 'path/to/dir');
     }
    
  2. 您正在尝试在字符串文字中使用它:

    include_once('ADMIN_CLASS_DIR/ClsAdminUser.php');
    

    PHP 中的常量不是这样工作的。它们仅在字符串之外解析。所以你可以这样做:

    include_once(ADMIN_CLASS_DIR . '/ClsAdminUser.php');
    

    如果您需要将常量定义为字符串,也可以这样做:

    include_once(constant('ADMIN_CLASS_USER') . '/ClsAdminUser.php');
    

要判断常量是否已定义,请使用defined 函数。如果定义了常量,它将返回true

如果您需要比这更好的帮助,请发布一些代码!

【讨论】:

  • 我已经发布了出现错误的代码行,请查看更新
  • @OmThe:login.php 第 14 行的代码是什么,如警告所示(在第 14 行的 E:\wamp\www\dfms\admin\login.php 中我>)?您发布的代码与问题没有直接关系...
  • @ircmaxell 它的主要问题是找不到类文件,但我在所需位置有文件
  • @OMT:发布第 14 行,这是警告告诉您问题所在的位置。更好的是,将include_once 更改为require_once,因为您需要它继续(但仍然发布该行)。
  • 我的 WAMP 设置有问题吗?因为相同的代码在我办公室的另一台机器上工作
【解决方案2】:

看起来您希望设置一个常量 ADMIN_CLASS_DIR,但实际上并没有。 PHP 将发出一个通知,然后假定该常量是一个字符串文字。你在哪里定义这个常数?您需要在脚本中包含该代码。

【讨论】:

  • 这是我遇到此问题的管理部分,相反,我的客户端部分(前端)工作正常,而在其他机器上则没有此类错误。
  • 很可能,另一台机器上的include_path 不同。
【解决方案3】:

看起来你在到达使用它的代码块之前没有定义常量。

您应该会收到通知:

Notice:  Use of undefined constant ADMIN_CLASS_DIR - assumed 'ADMIN_CLASS_DIR'

这表明 PHP 将假定它是一个字符串。并以这种方式对待它。

免责声明/题外话:

PHP 确实有一些奇怪的问题

【讨论】:

  • 它只是打印我“ADMIN_CLASS_DIR”
  • 你能显示代码吗?我认为您没有设置常量/在您尝试使用它的地方不可用。
猜你喜欢
  • 1970-01-01
  • 2016-01-15
  • 2016-08-11
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
相关资源
最近更新 更多