$这个变量在PHP

问题描述:

我刚开始熟悉PHP的面向对象功能,我想问你一些关于$this变量的内容。首先,如果我使用的$this关键字在一个类中没有定义的属性变量foo,这是否意味着,使用下面的代码:

$this->foo = 5; 
echo $this->foo; 

将在对象上创建foo财产运行时,就像在JavaScript中一样?这个属性的可见性是什么?

+0

我会推荐看看这个[page](http://stackoverflow.com/questions/151969/php-self-vs-this)。 – Aif 2009-12-06 13:37:55

是的,这将创建foo属性,其可见性将为public(这是默认值)。

你可以很容易地测试:

<?php 
class Foo { 
    public function setFoo($foo) { 
     $this->foo = $foo; 
    } 
} 

$f = new Foo(); 
$f->setFoo(5); 
echo $f->foo; 

将打印5没有任何错误。

是的,它当然会。

属性可以添加到任何对象,与其类无关。也可以写

$obj = new stdClass(); 
$obj->foo = 'bar'; 

值得一提的是__get__set神奇的功能。只要调用未定义的属性,就会调用这些方法。

这使得创建非常酷和动态的对象的方式。适用于具有未知属性的Web服务。

+0

__construct($ id)也是我的最爱,它允许在从数据库中提取信息时自动设置用户等对象。 $ id在这种情况下将通过类声明传递(例如$ obj = new myClass($ id);) – Kaji 2009-12-06 13:50:50