1
現在我有一個BaseObject對數據庫執行ORM。我依靠私有$ data和magic setter和getter來創建對象作爲私有對象成員(動態地)。在子類中,如果我想更改行爲來設置單個對象成員,則必須覆蓋父設置器並查找關鍵字。我的問題是,如果有更好的方法來做到這一點,我可以只覆蓋單個對象的成員通過__setter寧願去如何覆蓋magic setter和getter之後的參數php
基本對象映射它映射到數據庫和動態創建一堆私人則params的
class Base
{
private $data = array();
public function __construct(){
//get columns info from db and do set
}
public function __set($key, $value){
$this->data[$key] = $value;
}
public function __get($key){
return isset($this->data[$key])? $this->data[$key] : null;
}
}
和兒童班。眼下覆蓋參數設定我必須這樣做
class Child extends Base
{
public function __set($name, $value){
if($name == 'dog' && $value == 'chihuahua')
$this->dog = 'dog bark wolf wolf';
else if($name == 'cat' && $value == 'sand')
$this->cat = 'cat say meow meow';
...
}
}
我的問題是有優雅的方式來做到這一點,也許像這樣在子類?
public function __set_dog($value)
$this->dog = 'dog bark wolf wolf';
public function __set_cat($value)
$this->cat = 'cat say meow meow';
的目標是做
$animal1 = new Animal();
$anmial1->dog = 'pit bull';
$anmial1->cat= 'sand';
$animal2 = new Animal();
$anmial1->dog = 'chihuahua';
$anmial1->cat= 'house cat';
你能花多一點的文字在你想達到的目的上嗎?我完全不知道你在做什麼。 – Jasper
現在我有一個BaseMode對ORM執行ORM。我依靠私有$ data和magic setter和getter來創建對象作爲私有對象成員(動態地)。在子類中,如果我想更改行爲來設置單個對象成員,則必須覆蓋父設置器並查找關鍵字。我的問題是,如果有更好的方法來做到這一點,我可以重寫單個對象成員,而不是__setter。在此先感謝 – user332951
如果對象成員是私人的,否則沒有別的事情可以做。 –