2012-09-17 40 views
0

以下内容在php中是合法的。要求在分配前声明属性

class Foo{ 
    function setBar($bar){ 
     $this->bar = $bar; 
    } 
} 

有没有一种方法来生成属性Foo#bar尚未使用之前声明的通知? 我厌倦了浪费时间调试错别字。

+0

使用一个好的IDE可以为你生成getter和setter,你所需要做的就是声明私有属性。 ZendStudio浮现在脑海中 – Ibu

+0

@Ibu这可能是轻微的偏离主题,但是有没有可以做到这一点的免费/低成本IDE? – Sliq

+0

@Panique是的,你可以使用Eclipse进行PHP开发,Zend基于Eclipse无论如何 – Ibu

回答

2

我想这是你所追求的:

class Foo 
{  
    function setBar($bar) 
    { 
    $this->bar = $bar; 
    } 

    public function __set($name, $value) 
    { 
    throw new Exception('Can not set property ' . $name); 
    }  
} 

$foo = new Foo(); 
$foo->setBar('bar'); 

这里会发生什么事是,当一个类属性被称为是超出范围,神奇的__get或__set被调用。在那里你可以决定如何处理这种情况。

+0

嗯,这是一个有趣的方法,虽然需要将此代码添加到每个我不想做的类/基类中。你会认为PHP会发出E_NOTICE。 – SuprF1y

+0

这取决于你如何处理它。您可以使用基类,并发出E_NOTICE,如果您愿意 – JvdBerg

+0

点是我不想编写代码来检查正确性 - 我想要php或某种类型的lint程序来执行它。我猜这可能会出现在php> = 5.4的特性中,尽管至少可以让它避开它。 – SuprF1y