J'ai utilisé Codeigniter pour construire la partie frontale d'une application de taille moyenne, et j'ai rencontré un problème avec - ce que je pense être - l'héritage dans PHP. Voici ce que j'essaie de faire:Codeigniter et héritage multiple
En suivant l'architecture MVC, j'ai trouvé que je dupliquais beaucoup de code à travers les modèles, et j'ai décidé de créer un modèle commun dont les autres modèles pourraient hériter. Assez simple. Cependant, maintenant, je rencontre des problèmes avec certaines des fonctions qui sont définies dans la classe Model commun.
Voici une esquisse de ce que je fais:
<?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();
}
}
}
?>
Voici la sous-classe:
<?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;
}
Y at-il un problème en utilisant l'héritage multiple dans CodeIgniter? Je suis assez nouveau pour PHP et codeigniter.
Merci de votre visite.
J'ai fait exactement ce genre de chose dans le codeigniter et cela n'a jamais causé de problème. Il peut s'agir d'un problème avec la logique de getDeviceInfo ... Les conventions de l'idée aléatoire/mes conventions appellent getDeviceInfo comme $ this-> getDeviceInto au lieu d'utiliser la référence parent et au lieu d'utiliser array_push, utilisez arrCmds [] = $ cmds; –