在codeigniter中实现多级OOP的解决方案

时间:2015-10-13 11:24:34

标签: php codeigniter

我尝试像这样在codeigniter中实现OOP。我将CI_Controller扩展到MY_Controller

所以,代码是这样的。

        <?php

    if (!defined('BASEPATH'))
        exit('No direct script access allowed');

    class MY_Controller extends CI_Controller {

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

    //        // Autoload model.
            $model = strtolower(get_class($this));
            if (file_exists(APPPATH . 'models/' . $model . '_model.php')) {
                $this->load->model($model . '_model', $model);
            }
        }

    }

    class Public_Controller extends MY_Controller {

    // Layout untuk "Publik"
        public $layout = 'layout';

    }

    class Supervisor_Controller extends MY_Controller {

        public $layout = 'supervisor/layout';

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

            session_start();
            //Check login

            $login_status = $this->session->userdata('login_status');
            $user_level = $this->session->userdata('user_level');

            if (($login_status !== true) && ($user_level !== 'supervisor')) {
                redirect(base_url());
            }
        }

    }

    class Manager_Controller extends MY_Controller {

        public $layout = 'Manager/layout';

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

            session_start();

            // Cek status login user.
            $username = $this->session->userdata('username');
            $user_level = $this->session->userdata('user_level');
            $login_status = $this->session->userdata('login_status');

            if (($login_status !== true) && empty($username) && ( ($user_level !== 'manager'))) {
                redirect('base_url');
            }
        }

    }

    class Admin_Controller extends MY_Controller {
        public $layout = 'admin/layout';

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

            session_start();

            // Cek status login user.
            $login_status = $this->session->userdata('login_status');
            $user_level = $this->session->userdata('user_level');
            $username = $this->session->userdata('username');

            // Cek status login.
            if ( ($login_status !== true) && empty($username) ) {
                redirect('admin/login');
            }

            // Just admin can access it
            if ($user_level !== 'administrator') {
                $this->session->set_flashdata('pesan_error', 'Anda tidak berhak mengakses halaman ini!');
                redirect('admin/home');
            }
        }
    }

我的问题是,我想创建一个登录表单来实现这两个类。 有解决方案吗 我在CI 3.0.1

0 个答案:

没有答案