2014-11-18 5 views
-1

У меня есть простой MVC рамки я использую, когда я использую следующий вызов для загрузки модели в каждой функции в контроллере:Как вы можете использовать метод из родительского контроллера для установки частной переменной в php?

$member_model = $this->loadModel('Members'); 

То, что я хотел бы сделать, это вызов, который когда-то каждая функция контроллер Member может использовать его, а не называть его в каждой функции.

что-то вроде:

class Members extends Controller 
{ 
    private $member_model = $this->loadModel('Members'); 

    function myFunction(){ 
     myvar = $member_model->someFunction(); 
    } 
} 

Примечания: loadModel это метод класса контроллера которого контроллер Пользователей проходит.

Я получаю ряд различных ошибок в зависимости от того, является ли переменная частной/общедоступной или нет, однако она работает в пределах функции.

Возможно ли это сделать на уровне класса, если да, то каким образом?

Update 1

Пользователи Контроллер

class Members extends Controller 
{ 

private $member_model = null; 


function __construct() 
{ 
    parent::__construct(); 
    $this->member_model = $this->loadModel('Members'); 

} 
} 

контроллер класса

class Controller 
{ 
function __construct() 
{ 
    Session::init(); 

    try { 
     $this->db = new Database(); 
    } catch (PDOException $e) { 
     die('Database connection could not be established.'); 
    } 

    $this->view = new View(); 
} 

public function loadModel($name) 
{ 
    $path = MODELS_PATH . strtolower($name) . '_model.php'; 

    if (file_exists($path)) { 
     require MODELS_PATH . strtolower($name) . '_model.php'; 
     $modelName = $name . 'Model'; 
     return new $modelName($this->db); 
    } 
} 
} 

ответ

0

вы можете использовать его в конструкторе

class Members extends Controller 
{ 
    private $member_model = null; 

    public function __constructor() { 
     parent::_constructor(); 
     $this->member_model = $this->loadModel('Members'); 
    } 
    function myFunction(){ 
    $myvar = $member_model->someFunction(); 
    } 
} 
+0

I f Я включаю его в свой конструктор, я получаю db-ошибку, если он до 'parent :: __ construct();' и я получаю «Can not redeclare class ClassesModel», если это произойдет после него. См. Редактирование кода. – nikmav

+0

затем сначала вызовите родительский конструктор ... без каких-либо подробностей вам не поможет ... я сначала изменил код с родительским конструктором – donald123

+0

Я включил код в свои правки. что-то выделяется? – nikmav