初学者请教下PHP手册中创建类的实例化对象的问题

class test {
public function counter() {
$c = 0;
$c += 1;
echo $c;
}
}
$o = new test;
$o -> counter(); // 输出:1
echo '<br>';
$p = new test;
$p -> counter(); // 输出:1

检测
$o == $p true
$o === $p false
想了解下在内存里,$o 与 $p 是如何分布的,之间是何种关系?
如将counter()中的$c定义为静态成员。

class test {
public function counter() {
static $c = 0;
$c = $c + 1;
echo $c;
}
}
$o = new test;
$o -> counter(); // 输出:1
echo '<br>';
$p = new test;
$p -> counter(); // 输出:2 为什么这里输出为2?????

在static关键字这一节中,讲到“静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。”

class test {
public static $str = 'Hello World!';
}
$o = new test;
echo $o::$str; // 正常输出'Hello World'。为什么这里通过实例化对象是可以访问静态属性的

我想手册上说的是用这种方式来访问:
print $foo->$my_static


 他这里说的静态方法访问是指::
翻译有歧义的时候你可以看看英文版。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网