Проблемы при использовании Factory, абстрактного класса и моделей в CodeIgniter

Я использую codeigniter, и я хочу использовать свою фабричную библиотеку (или, если вы знаете лучший способ), для создания пользователя, пользователь - это класс, расширяющий абстрактную модель. и я получаю сообщение об ошибке, что я не включил абстрактный класс. я не знаю, как включить его в codeigniter. Я не могу просто загрузить абстрактный класс, расширяющий модель. вот мой код:

    class User extends CI_Controller {

    public function __construct() {
        parent::__construct();

        $this->load->library('factory');

    }

    function register(){
        $user = $this->factory->create('doctor'); // returns 'doctor_m' or 'patient_m'
        $this->load->model($user); 
        $this->$user->addUser();
    }
}

abstract class User_m extends CI_Model{

    function __construct() {
        parent::__construct();
    }

    abstract protected function addUser();
    abstract protected function getUser();
}

class Doctor_m extends User_m{

    function __construct() {
        parent::__construct();
    }

    function addUser() {
        echo "doctor";
    }

    function getUser() {
    }
}

class Patient_m extends User_m{

    function __construct() {
        parent::__construct();
    }

    function addUser() {
        echo 'patient';
    }

    function getUser() {
    }
}

class factory{
    function create($type){
        if($type == 'doctor') return 'doctor_m';
        else return 'patient_m';
    }
} 

что с этим не так? это лучший способ написать это в MVC? нужна помощь, я действительно запутался.


person Ben    schedule 06.06.2011    source источник


Ответы (1)


Если базовый класс находится в моделях непосредственно рядом с другими моделями, просто добавьте require_once( 'filename.php' );, прежде чем начинать код класса.

Если ваш базовый класс находится в библиотеках (или другой папке), я бы посоветовал вам переместить его, поскольку я бы не стал считать это подходящим местом. Если я создаю базовый класс модели, я помещаю его в каталог модели ....

person Frank V    schedule 06.06.2011
comment
я не могу, user_m расширяет модель, поэтому я не могу просто включить ее. - person Ben; 07.06.2011