2014-01-17 2 views
0

나는 분명히 그 일을하지 않는다.PHP에서 객체에 변수를 추가하는 방법

$start = $hours->start{$day}; 

나는 동적으로 $의 일 변화 할 수 있어야합니다. $ day는 요일 일 수 있습니다.

//For example 
$start = $hours->startSunday; 

더 명확하게하려고 노력하겠습니다. 다음 개체는 특정 시간 나는 그것이 요일이 될 수 있기 때문에, 변수와 동적 일 부분을 변경할 수 있어야합니다

// will echo something like 8:00am 
echo $hours->startSunday; 

//will echo something like 7:00am 
echo $hours->startMonday; 

가 포함되어 있습니다.

//so something like 
echo $hours->start.$day; 

하지만 나던 작업

+0

하면 전체 코드를 보여줄 수있는 마술 방법, __get() 그리고 __set()를 사용할 수 있습니까? – user2936213

+0

변수 variablenames를 사용하지 마십시오. 방법을 시도해보십시오 (예 : '$ 시간 -> 시작 ($ 일)'. –

+0

왜이'call_user_func_array (array ($ hours, 'start'. $ day), $ args)'를 사용하지 않을까요? – PRAISER

답변

1

첫째. 구문을 편집 할 수있는 문법은

$hours = new stdClass(); 
$day = 'Sunday'; 
$hours->{'start'.$day} = 10; 
$start = $hours->{'start'.$day}; 
var_dump($start); 

Secnod입니다. getter와 setter 메소드를 사용하는 것이 좋습니다.

class Hours 
    { 
    private $hours = array(); 
    public function getStart($day) 
     { 
     return $this->hours[$day]; 
     } 
    public function setStart($day, $value) 
     { 
     $this->hours[$day] = $value; 
     } 
    } 
$hours = new Hours(); 
$day = 'Sunday'; 
$hours->setStart($day, 10); 
$start = $hours->getStart($day); 
var_dump($start); 
0

당신은

class Hours { 
    private $data = array(); 

    public function __get($day) { 
     return $this->data[$day]; 
    } 

    public function __set($day, $val) { 
     $this->data[$day] = $val; 
    } 
} 

$h = new Hours(); 
echo $hours->startMonday; 
관련 문제