如何使用父控制器中的方法在php中设置私有变量?

时间:2014-11-18 09:05:04

标签: php class-variables variable-declaration

我有一个简单的MVC框架,我正在使用以下调用来在控制器中的每个函数中加载模型:

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

我想做的就是调用一次,这样成员控制器中的每个功能都可以使用它而不是在每个函数中调用它。

类似的东西:

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

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

注意: loadModel是成员控制器扩展的Controller类的方法。

我得到一系列不同的错误,具体取决于变量是私有/公共,还是在函数内都不起作用。

甚至可以在班级做到这一点,如果是这样的话?

更新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);
    }
}
}

1 个答案:

答案 0 :(得分: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();
   }
}