2014-07-24 31 views
1

我读过,您可以使用访问器函数通过一段代码进行所有访问。这本书向我展示了代码,我明白了。如何使用访问器函数

但我不知道如何使用它。有人可以给我一个例子或语法来使用这个功能吗?

从我的书的代码:

class classname 
{ 
    public $attribute; 
    function __get($name) 
    { 
     return $this->$name; 
    } 
    function __set($name, $value) 
    { 
     $this->$name = $value; 
    } 
} 
+0

你遇到困难的部分是什么?如果您调用一个属性(*任何*属性),'__set'会将属性'$ name'设置为'$ value','__get'获取该值。例如在'$ foo-> number = 42''中,'number'将是'$ name','42'将会是'$ value'。 – Carpetsmoker

+0

他只是好奇,就是这样。 –

+0

实际上,这有一个重要意义。你不能访问私有变量没有__set和__get。尽管你也可以创建动态变量。 –

回答

1

访问器提供一种方法来访问私有类变量。

一个例子(让我们只想说,$attribute是私有的):

<?php 
    $classNameObject = new classname(); 

    // Setting the value 
    $classNameObject->attribute = "A value"; 

    // Getting the value 
    echo $classNameObject->attribute; 
?> 

但在PHP中__set()__get()功能的方式,他们可以创建动态属性的作用。

+0

正是我想要的^ _ ^谢谢! –

+0

不客气。乐意效劳。 –

+0

我得到了这个错误:注意:试图在第17行的C:\ Apache24 \ htdocs \ test3.php中获取非对象的属性,任何想法为什么? $名称; \t \t} \t \t功能__set($名称,$值) \t \t { \t \t \t $这 - > $名称= $值; \t \t} \t} \t \t $一个新=类名(); \t $ a =“A value”; \t echo $ a-> attribute; ?> –

相关问题