-4

尽管允许使用以下语法访问类变量:- $object::$variable,但它是否具有任何意义,即在访问类变量的情况下,我们可以使用类名或该类的对象来访问类变量是不是吗?

4

2 回答 2

0

该运算符用于访问静态变量。这意味着变量链接到类,而不是该类的实例。即在所有实例上共享。

这是一个例子来告诉你我的意思:

class MyClass
{
    public static $myStaticVar;
    public $myObjectVar;
}

$instance1 = new MyClass();
$instance2 = new MyClass();

// normal vars are linked to an instance of a class
$instance1->myObjectVar = 'value1';
$instance2->myObjectVar = 'value2';

// statics are shared between all instances of the same class
$instance1::$myStaticVar = 'value3';

echo $instance2::$myStaticVar; // results in 'value3'!
于 2013-09-10T12:36:14.980 回答
-1

你是这个意思吗?

<?php

class A {
    public static $b = 'Hello World!';
}

echo A::$b;
$obj = new A();
echo $obj::$b;

警告:建议使用实例变量访问静态类成员。

这仅适用于 PHP >= 5.3.0。

PHP <= 5.2.17 不喜欢$obj::$b并抛出语法错误:

解析错误:语法错误,意外的 T_PAAMAYIM_NEKUDOTAYIM,期待 ',' 或 ';'

于 2013-09-10T12:27:57.770 回答