__类PHP。我需要澄清一下。
警告:常量():找不到具有完全相同名称的常量/ 问题是:为什么我需要识别类名来访问常量; 这是一个范围问题还是什么 …这是一个范围问题还是什么 你搞定了__类PHP。我需要澄清一下。,php,constants,Php,Constants,警告:常量():找不到具有完全相同名称的常量/ 问题是:为什么我需要识别类名来访问常量; 这是一个范围问题还是什么 …这是一个范围问题还是什么 你搞定了 当您定义了一个局部常量(在类内部)时,它是一个 为了访问类常量,您应该在前面加上类名(在引用类外部时)或关键字,如下所示: class foo { const bar1 = 10.0; const bar2 = 2.22; const bar3 = 5.12; function getTotal($some_string,
当您定义了一个局部常量(在类内部)时,它是一个 为了访问类常量,您应该在前面加上类名(在引用类外部时)或关键字,如下所示:
class foo {
const bar1 = 10.0;
const bar2 = 2.22;
const bar3 = 5.12;
function getTotal($some_string, $some_number) {
$total = 0.0;
// Why would this flag a warning?
// $what_is_const = constant("bar" . $some_string); // DOES NOT WORK!
$what_is_const = constant(__CLASS__ . "::bar" . $some_string); // WORKS!
$total += $what_is_const * $some_number;
}
}
…这是一个范围问题还是什么
你搞定了当您定义了一个局部常量(在类内部)时,它是一个 为了访问类常量,您应该在前面加上类名(在引用类外部时)或关键字,如下所示:
class foo {
const bar1 = 10.0;
const bar2 = 2.22;
const bar3 = 5.12;
function getTotal($some_string, $some_number) {
$total = 0.0;
// Why would this flag a warning?
// $what_is_const = constant("bar" . $some_string); // DOES NOT WORK!
$what_is_const = constant(__CLASS__ . "::bar" . $some_string); // WORKS!
$total += $what_is_const * $some_number;
}
}
如果类外有一个常量,它的行为将与类外的常量相同。如果在类内声明一个常量,它几乎就像一个静态属性,并且可以以非常类似的方式访问(例如,类内的
self::MY_constant
,或类外的Foo::MY_constant
;与self:$staticProperty
或Foo:$staticProperty
相比)
这有助于确定哪些类用作依赖项,以及常量的实际定义位置。这通常允许常量更具可读性,因为它提供了与常量相关的上下文线索
另一方面,让常量完全大写并加下划线(例如,
MY_CONSTANT
而不是myConstant
)是一种很好的样式。此外,类名通常被引用为大写(MyClass
而不是MyClass
)。如果类外有一个常量,它将作为类外的常量。如果在类内声明一个常量,它几乎就像一个静态属性,并且可以以非常类似的方式访问(例如,类内的self::MY_constant
,或类外的Foo::MY_constant
;与self:$staticProperty
或Foo:$staticProperty
相比)
这有助于确定哪些类用作依赖项,以及常量的实际定义位置。这通常允许常量更具可读性,因为它提供了与常量相关的上下文线索
另一方面,让常量完全大写并加下划线(例如,
MY_CONSTANT
而不是myConstant
)是一种很好的样式。另外,类名通常被引用为大写驼峰(MyClass
而不是MyClass
)。是的,它是a.Yes,但为什么它会这样呢?因为您已经声明了它。这是否意味着如果它是类常量,为了访问bar1,我必须显式地声明常量(“foo::bar1”)代码>与常数(“bar1”);//那就是如果bar1=const
?是的,它是一个。是的,但为什么它的行为是这样的?因为您已经声明了它是这样的。这是否意味着如果它是一个类const,为了访问bar1,我必须显式地声明常量(“foo::bar1”)代码>与常数(“bar1”);//那就是如果bar1=const
?上下文线索,明白了!背景线索,明白了!