【问题标题】:Use of undefined constant erorr in phpphp中使用未定义的常量错误
【发布时间】:2012-06-28 11:19:10
【问题描述】:

当我将代码切换到另一个系统时,我收到错误(下面提到的代码),

配置:

操作系统:Windows 7 php服务器:Xampp

请帮我解决这个问题。提前致谢。

代码:

<?php
class settings{
    public $theme;
    public $db_pf;

    function __construct(){
        $this->theme="default";
        $this->db_pf="task_";
        $this->paths();
        $this->abbr();
        $this->errors();

        $this->enable_db_config();
    }
    function paths(){
        define(ROOT,$_SERVER['DOCUMENT_ROOT']);
        define(BP,"/task/");
        define(ABSPATH,"/task/ta-admin/");
        define(ADMPATH,"/task/administrator/");
        define(INCLUDE_PATH,ABSPATH."includes/");
        define(MODULE_PATH,ABSPATH."modules/");
        define(CONTENT_PATH,ABSPATH."contents/");
        define(THEME_PATH,ABSPATH."templates/".$this->theme."/");
        define(STYLE_PATH,THEME_PATH."styles/");
        define(IMAGE_PATH,THEME_PATH."images/");
        define(JS_PATH,BP."assets/js/");
        define(JQ_PATH,BP."assets/jq/");
    }
    function enable_db_config(){
        include(ROOT.BP."ta-includes/class-db-config.php");
    }
    function abbr(){
        define(task_title,"Admin-Quit Tasker-");
        define(LOGIN_TITLE," Administrator Login...");
        define(SLOGAN,"Enabling Solutions to your Tasks...");
    }
    function errors(){
        define(NOTFOUND,"Page not found");
        define(GOBACK," please press ok to go back...");    
    }
}
$obj_settings=new settings();
?>

错误:

Notice: Use of undefined constant ROOT - assumed 'ROOT' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 14

Notice: Use of undefined constant BP - assumed 'BP' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 15

Notice: Use of undefined constant ABSPATH - assumed 'ABSPATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 16

Notice: Use of undefined constant INCLUDE_PATH - assumed 'INCLUDE_PATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 17

Notice: Use of undefined constant CONTENT_PATH - assumed 'CONTENT_PATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 18

Notice: Use of undefined constant THEME_PATH - assumed 'THEME_PATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 19

Notice: Use of undefined constant STYLE_PATH - assumed 'STYLE_PATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 20

Notice: Use of undefined constant JS_PATH - assumed 'JS_PATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 21

Notice: Use of undefined constant JQ_PATH - assumed 'JQ_PATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 22

【问题讨论】:

  • 报错信息的哪一部分你不明白?

标签: php constants undefined


【解决方案1】:

您的常量必须是字符串。所以你必须将它们“包装”在这样的引号中:

define('ROOT',$_SERVER['DOCUMENT_ROOT']);
       ^    ^

如有疑问,请始终检查Manual,在这种情况下为define()

添加:
我发现,在函数中定义常量也有点“dodgy”。如果您坚持不将它们移动到一开始就加载的另一个(例如config)文件,那么至少将它们从类结构中取出。

【讨论】:

  • 谢谢,效果很好。但是在我的另一个系统中,我以前从未使用过引号,但它们运行良好,你能告诉我应该在 php.ini 文件中更改配置吗
  • 对不起,我不能告诉你为什么,因为我不知道你的“其他系统”是什么。只需查看define() 的示例,看看它应该如何完成。
  • @Kmanikandan:如果您修复了某些问题,请在正确的位置进行修复。这次是你的代码,而不是 PHP ini 设置。由于这两个系统不同,您需要了解 ini 设置不同的教训,并且您应该充分利用这一点:启用错误报告/将您的开发系统登录到最高级别以改进您的代码.
【解决方案2】:

我认为您误解了什么是定义和常量/从对象中以这种方式定义常量实际上没有意义。

也许这是你正在做的更好的方法:

http://php.net/manual/en/language.oop5.constants.php

另外,使用定义设置项目的最常见用法是使用 si9mple 设置或配置文件...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 2018-05-05
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2016-08-19
    • 2021-09-04
    相关资源
    最近更新 更多