目前我正在阅读PHP 5 OOP(properties section)并在那里找到以下声明:
在类方法中,属性,常量和方法可能是 使用$ this-> property
形式访问
这很奇怪,但我无法使用该格式访问常量。以下代码将引发通知:
class A
{
const HELLO = 'HELLO WORLD';
public function __construct()
{
echo $this->HELLO;
}
}
$a = new A();
我是否误解了文档的某些内容或作者的错误?
答案 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