我一直在使用Codeigniter來構造一箇中等大小的應用程序的前端,並且遇到了一個問題 - 我認爲可能是 - PHP中的繼承。下面是我想要做的:Codeigniter和多重繼承
在遵循MVC架構的過程中,我發現我在模型中複製了很多代碼,並決定創建一個可以從其他模型繼承的通用模型。夠簡單。但是,現在,我遇到了常見Model類中定義的一些功能問題。
下面是我在做什麼草圖:
<?php
/**
* Common Model
*
*/
class DeviceModel extends Model {
function DeviceModel() {
parent::Model();
}
public function getDeviceId($d) { // this is just example code. }
public function getDeviceInfo($id) {
$selectStmt = "SELECT BLAH, BLAH2 FROM YADDAYADDA...";
$query = $this->db->query($selectStmt, array($id));
if ($query->num_rows() > 0) {
return $query->result();
}
}
}
?>
這裏是子類:
<?php
require_once('devicemodel.php');
class ManageModel extends DeviceModel {
function ManageModel() {
parent::DeviceModel();
}
function getDropDownList($parkId,$tableName,$userclass) {
$arrCmds = array();
$arrHtml = array();
$deviceInfo = parent::getDeviceInfo($parkId);
$did = parent::getDeviceId($deviceInfo);
foreach ($deviceInfo as $device) {
$cmds = $this->getDeviceCommands($device->dtype,$tableName,$userclass);
array_push($arrCmds,$cmds);
}
//
// **After the refactor, I am receiving Undefined Offsets for this loop.**
//
for ($i=0; $i<sizeof($arrCmds); $i++) {
$html = $this->generateHtml($arrCmds[$i],$did[$i]);
array_push($arrHtml,$html);
}
return $arrHtml;
}
是否有笨使用多重繼承的問題嗎?我對PHP和codeigniter相當陌生。
感謝您的期待。
我已經在codeigniter中完成了這樣的事情,它從來沒有引起任何問題。這可能是一個問題與getDeviceInfo的邏輯... 夫婦隨機創意的/我的約定調用getDeviceInfo爲$ this-> getDeviceInto而不是使用父ref,而不是使用array_push使用arrCmds [] = $ cmds; – 2010-07-26 18:06:51