2012-02-07 4 views
0

У меня есть следующий класс, который содержит много частных переменных.OO PHP, возвращающий все частные переменные как переменные на странице

class plantOfTheMonth { 

//Declare which centre(s) are being used 
private $centre = ""; 

//Declare the attributes of the current Plant Of The Month 
private $name = ""; 
private $latinName = ""; 
private $image = ""; 
private $imageAlt = ""; 
private $imageLink = ""; 
private $strapLine = ""; 
private $description = ""; 
private $colour = ""; 
private $centres = ""; 

//Declare variables for error handling 
private $issue = ""; 
private $issueCode = ""; 

public function __construct() { 

} 

public function returnAttributes() { 

    $list = ""; //Set an Empty List 

    foreach($this as $key => $value) { 

     decodeText($value); //decode performs a stripslashes() 
     $$key = $value; //Use a variable variable and assign a value to it 
     $list .= "'".$key."', "; //add it to the list for the compress() 

    } 

    $list .= substr($list, 0, -2); //Take the final ", " off 
    return compact($list); //return the list of variables as an array 

} 
} 

Я хочу вернуть все атрибуты в качестве переменных со своими значениями, чтобы я мог предварительно заполнить поле формы. У меня есть запрос к базе данных, который заполняет все атрибуты (что работает, как доказано путем тестирования). В мои дни до OO я извлекал информацию из db, помещал ее в переменные, а затем использовал compress() для отправки и извлечения(), чтобы получить все переменные. Является ли это чем-то, что будет работать, как в методе returnAttributes() в моем классе?

ответ

4

Почему это так сложно? Вот пример с гораздо меньшим количеством кода, который имеет желаемое поведение.

public function returnAttributes() 
{ 
    $list = array(); //Set an Empty List 

    foreach(array_keys(get_class_vars(__CLASS__)) as $key) 
    { 
     $list[$key] = $this->$key; 
    } 

    return $list; 
} 
+0

Спасибо, это намного проще на глаза! –

+0

Добро пожаловать. – Dan

 Смежные вопросы

  • Нет связанных вопросов^_^