Codeigniter и множественное наследование - PullRequest
3 голосов
/ 26 июля 2010

Я использовал Codeigniter для создания внешнего интерфейса приложения среднего размера и столкнулся с проблемой - как мне кажется, наследования в PHP.Вот что я пытаюсь сделать:

Следуя архитектуре 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;
    }        

Существует ли проблема с использованием множественного наследования в codeigniter?Я довольно новичок в PHP и codeigniter.

Спасибо за поиск.

1 Ответ

0 голосов
/ 26 июля 2010

Я не вижу, где там множественное наследование.

Я также работаю с codeigniter, и мне нужно было создать подкласс для его контроллера, чтобы все мои контроллеры могли выходить из моего, а не из CodeIgniter напрямую.

CodeIgniter имеет встроенные методы для расширения своих классов своими собственными. Или вы можете открыть файл model.php (в system / library /) и в верхней части файла, сразу после if (!defined ...), вы можете добавить код вашего ManageModel класса

Также вот ссылка для расширения модели http://www.askaboutphp.com/50/codeigniter-extending-the-native-model-and-make-it-your-own.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...