看我的AN EMPTY ARRAY
代碼。誰能告訴我,爲什麼執行以下代碼時變量不是在父類被覆蓋
$accountModel->setEmail('[email protected]');
class AccountModel extends Model {
protected $table = 'account',
$key = 'id',
$data = array(
'id' => null,
'email' => null,
'first_name' => null,
'created' => null,
'last_login' => null,
'hash' => null
);
}
class Model extends CI_Model {
protected $table = null;
protected $key = null;
protected $connection = null;
protected $data = array();
public function __call ($function, $arguments) {
$original = $function;
$function = strtolower(preg_replace('/(?<=[a-z])([A-Z])/', '_$1', $function));
$prefix = substr($function, 0, 4); //returns get_ or set_
if ($prefix == 'get_' || $prefix == 'set_') {
$key = substr($function, 4); //returns "email"
var_dump($this->data); //AN EMPTY ARRAY
exit($key);
}
throw new Exception('Call to undefined method '.get_class($this).'::'.$original.'()');
}
}
根據example 2 on PHP.net它應該只是罰款數組是空的,並沒有得到來自AccountModel
填充。
我試圖運行$ accountModel-> setEmail('[email protected]');
更新:我已經意識到我的代碼中另一個bug,失敗對我而言。感謝您的幫助球員
@ kevinmajor1,沒有。繼承的所有優點是,我可以在一個基類中定義我的方法,然後擴展其他類,只需更改其默認道具。 – gaRex 2011-05-12 07:01:51
@亞歷山大:整個觀點是,不,你不能。 – 2011-05-12 09:23:45
@Tomalak,怎麼樣?你能提供一些例子,當它不可能的時候? 我已經提供了示例代碼,它可能並且工作正常。我們在這裏談論繼承,當B類可以擴展A類嗎? – gaRex 2011-05-12 09:38:41