2010-01-31 2 views
0

php5의 클래스에서 데이터를 가져 오려고합니다. 클래스의 데이터가 private이고 호출하는 함수가 클래스의 데이터를 요청하고 있습니다. 나는 case 문을 사용하지 않고 private 변수에서 특정 데이터를 얻을 수 있기를 원한다. 당신이 할 수클래스에서 변수를 동적으로 가져옴

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

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