저는 Codeigniter를 사용하여 적당한 크기의 응용 프로그램의 프론트 엔드를 구성했으며 PHP의 상속과 관련된 문제가 발생했습니다. 여기에 내가 뭘하려고하는지 알 수있다 :Codeigniter 및 다중 상속
MVC 아키텍처를 따랐을 때 모델을 통해 많은 코드를 복제하고 다른 모델에서 상속받을 수있는 공통 모델을 만들기로 결정했다. 충분히 간단합니다. 그러나 이제는 공통 Model 클래스에 정의 된 일부 기능에 문제가 있습니다.
<?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;
}
는 CodeIgniter의에서 다중 상속을 사용하여 문제가 있습니다 :
여기<?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와 codeigniter에 대해 상당히 새로운 것이다.감사합니다.
저는 codeigniter에서 이런 종류의 작업을 수행 했으므로 결코 문제가 발생하지 않습니다. 그것은 getDeviceInfo의 로직 문제 일 수 있습니다 ... 몇 가지 무작위 아이디어/내 규칙은 부모 참조를 사용하는 대신 getDeviceInfo를 $ this-> getDeviceInto로 호출하고 대신 array_push를 사용합니다. arrCmds [] = $ cmds; –