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


How can you use a method from a parent controller to set a private variable in php?

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

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

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

像这样:

class Members extends Controller
{
    private $member_model = $this->loadModel('Members');
    function myFunction(){
        myvar = $member_model->someFunction();
    }
}

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

我收到一系列不同的错误,具体取决于变量是私有/公共还是两者都不是,但它在函数中工作。

是否有可能在班级层面做到这一点,如果是的话,如何做到这一点?

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

你可以在构造函数中使用它

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();
   }
}