2014-01-17 92 views
0

我有這個,這並不明顯工作。如何追加一個變量到一個對象在php

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

我需要能夠動態地改變$ 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

可以顯示完整的代碼? – user2936213

+0

不要使用變量變量名稱。嘗試一種方法,例如'$小時 - >開始($日)'。 –

+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

你可以用魔術方法,__get()和__set()

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; 
相關問題