2010-01-31 36 views
0

我試圖從php5中的類中獲取數據,其中類中的數據是私有的,調用函數正在請求類中的一段數據。我希望能夠在不使用case語句的情況下從私有變量中獲取特定的數據。從類動態選取變量

我想要做的東西的影響:

public function get_data($field) 
{ 
    return $this->(variable with name passed in $field, i.e. name); 
} 

回答

1

你可以只使用

class Muffin 
{ 
    private $_colour = 'red'; 

    public function get_data($field) 
    { 
     return $this->$field; 
    } 
} 

然後,你可以這樣做:

$a = new Muffin(); 

var_dump($a->get_data('_colour')); 
+1

很酷。謝謝。不知道那會起作用。 – JustJon 2010-01-31 02:49:14

0
<?php 
public function get_data($field) 
{ 
    return $this->{$field}; 
} 
?> 

您可能希望看看神奇的__get()函數,例如:

<?php 
class Foo 
{ 
     private $prop = 'bar'; 
     public function __get($key) 
     { 
       return $this->{$key}; 
     } 
} 

$foo = new Foo(); 
echo $foo->prop; 
?> 

我會小心這類代碼,因爲它可能允許暴露類的內部數據太多。

+0

謝謝。我也會研究__get。 – JustJon 2010-01-31 02:49:31