【问题标题】:How to access a constant from within a class method如何从类方法中访问常量
【发布时间】:2011-02-09 06:26:51
【问题描述】:

我正在将 php 应用程序从程序迁移到 oop。
我使用一个 DEBUG 常量来激活错误和警告输出(事实上,我有你,每个都使输出更详细。
但我找不到从方法中访问这些常量的方法。
常量在自动加载之前定义在一个单独的文件中。

在我拥有的实用程序文件中

define('DEBUG', TRUE);

在给定的方法中,我尝试了

if(!defined('DEBUG')) define('DEBUG', FALSE);

但我总是以 DEBUG=FALSE 结束。
我究竟做错了什么?我是个 oop 的菜鸟,所以请温柔一点:-)

澄清

每个班级都有自己的文件。
在任何给定的脚本中,我要做的第一件事就是包含实用程序文件。实用程序文件是定义DEBUG并具有_autoload功能的文件。

script_file.php
 includes utility_file.php
  defines DEBUG
  has _autoload function

【问题讨论】:

  • 通常定义在任何地方都可用。看来,您的文件加载有问题。
  • 所以实用程序定义了常量 DEBUG,那么 _autoload 函数是怎么回事?检查是否定义了 DEBUG 的函数在哪里?是自动加载功能吗?还是在包含之后的某个地方?
  • 自动加载需要的类。这些类中的方法是尝试使用 DEBUG 的方法

标签: php oop constants


【解决方案1】:

根据this,您应该直接在您的代码中访问 DEBUG(没有前置 $)。您是否在具有您正在谈论的功能的同一文件中包含或要求您的实用程序文件?我认为这不是 OOP 问题

【讨论】:

  • 这就是为什么我无法理解这里发生了什么......我在问题中添加了一个澄清
  • 我可以从所有程序函数中访问 DEBUG 常量。但是在一个类里面,就好像它从来没有存在过一样......
【解决方案2】:

darkphoenix 是对的,这不是 OOP 问题。这是一个 NetBeans 问题。
我正在使用 NetBeand 并在保存时将文件上传到远程服务器。我在实用程序文件中将 DEBUG 常量设置为 TRUE 并在 NetBeans 上点击保存,保存过程(显然)没有问题(没有警告或任何东西)。
当后来我通过 SSH 登录时,我对文件做了一只猫,这让我大吃一惊。该文件从未保存到服务器。我的本地副本有我的最后一次编辑,但远程副本没有...
故事的寓意:我讨厌你的 NetBeans

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 2012-03-11
    • 2012-12-16
    • 2012-02-04
    • 2012-02-19
    • 2011-09-05
    • 2011-11-28
    相关资源
    最近更新 更多