0
我可能有一個基本的面向對象的疑問,但我相信這是值得分享數小時後的搜索。從父類(PHP和ZF1)獲取「getters()」到一個數組()PHP
例如:從我的控制器我想要從實體類中檢索數據...但是,此類擴展了可以執行此工作的摘要。 控制器:
//Setting info to object
$entity->setName('Peter');
$entity->setAnge(33);
//Retriving data in array
$data = $entity->getData();
類實體:
class Entity extends EntityAbstract {
private $name;
private $age;
public function getData() {
return parent::getData($this);//I'm passing this object to get its methods (or vars)
}
public class setName() { ... }
public class getName() { ... }
public class setAge() { ... }
public class getAge() { ... }
}
最後Abrastract類(父)。
class EntityAbstract {
public function getData($entity) {
//I'm not sure how to proceed here.
//I've listed all child's methods, but can't list class_vars (private)
$methods = get_class_methods($entity);
// By listing method, I've tryed to use a regular expression to
// identify methods starting with 'get' and then setting an array but
// this didn't work... I got a memory exceed error.
$data = array();
// foreach() loop
$data[ $valueKey ] = $entity->$methodGetOfEach();
return $data;
}
}
如果也許有一些zend的方法來幫助我,但我相信這是OOP和PHP知識的問題來解決。
感謝您的任何建議。
感謝您的幫助......當然,這會奏效。我實際上正在嘗試不必爲每個創建的實體類創建一個toArray(或getData)方法。 根據我的想法,我可以創建新的Entity Classes,擴展EntityAbstract並只設置它的屬性和代人getter和setter。就這樣。謝謝。 – Kzoty
剛剛更新我的答案與你想做的事情。 –
感謝戴夫給你的時間。在這種情況下,我必須將我的實體變量從私有變爲受保護的。沒關係。非常感謝。 – Kzoty