访问PHP对象中的常量

时间:2012-10-28 16:00:21

标签: php class properties

目前我正在阅读PHP 5 OOP(properties section)并在那里找到以下声明:

  

在类方法中,属性,常量和方法可能是   使用$ this-> property

形式访问

这很奇怪,但我无法使用该格式访问常量。以下代码将引发通知:

class A
{
    const HELLO = 'HELLO WORLD';

    public function __construct()
    {
        echo $this->HELLO;
    }
}

$a = new A();

我是否误解了文档的某些内容或作者的错误?

6 个答案:

答案 0 :(得分:3)

访问常量尝试

class A
{
    const HELLO = 'HELLO WORLD';

    public function __construct()
    {
        echo self::HELLO;
    }
}

答案 1 :(得分:2)

手册中的条目确实有点误导。我现在已经删除了对常量和方法的引用,因为它们不属于有关属性的章节。新段落现在听起来像这样:

  

在类方法中,可以使用 - >访问非静态属性。 (对象运算符):$ this-> property(其中property是属性的名称)。使用::(Double Colon):self :: $属性访问静态属性。有关静态和非静态属性之间差异的更多信息,请参阅Static Keyword

可能需要一周的时间才能在所有镜子上显示更改。

感谢您指出。

答案 2 :(得分:0)

使用self或类名访问常量。 如果你在同一个班级:

self::HELLO

如果您在其他课程中使用它:

A::HELLO 

答案 3 :(得分:0)

你必须使用self::HELLO !!

答案 4 :(得分:0)

最清楚的解释是在PHP手册的Class Constants页面上。在类中,您可以使用self::constant从您使用Classname::constant的类外部访问常量来访问常量。

对于您的示例,您将使用: -

class A
{
    const HELLO = 'HELLO WORLD';

    public function __construct()
    {
        echo self::HELLO;
    }
}

$a = new A();

或者,从课外: -

echo A::HELLO;

但是,我链接的手册页中的说明非常清晰。

我应该指出,没有必要实例化该类来访问其中包含的常量。以下内容适用: -

class A
{
    const HELLO = 'HELLO WORLD';
}

echo A::HELLO;

答案 5 :(得分:0)

在类本身中,您可以访问常量,就像在类之外的静态:self::MY_CONSTANT一样,您可以使用Class_Name::MY_CONSTANT来引用它。如果有疑问,(比如,抽象类中的例子),我喜欢使用:

$self = get_called_class($this);
$self::MY_CONSTANT;//gets the constant of currently called class

一种记忆的简单方法:想想PDO查询:

$stmt->fetch(PDO::FETCH_ASSOC);//<-- uses class constant