【问题标题】:How can you use a method from a parent controller to set a private variable in php?如何使用父控制器中的方法在 php 中设置私有变量?
【发布时间】:2015-01-15 09:44:41
【问题描述】:

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

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

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

类似:

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

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

注意: loadModel 是 Controller 类的方法,Members 控制器扩展了它。

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

是否有可能在班级级别做到这一点,如果可以,如何做?

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

【问题讨论】:

    标签: php class-variables variable-declaration


    【解决方案1】:

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

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

    【讨论】:

    • 如果我将它包含在我的构造函数中,如果它在 parent::__construct(); 之前,我会得到一个 db 错误,如果它在它之后,我会得到一个“无法重新声明类 ClassesModel”。查看代码的修改。
    • 然后先调用父构造函数...没有更多细节无法帮助您...我先用父构造函数更改了代码
    • 我在编辑中包含了代码。有什么突出的地方吗?
    • 将还需要 MODELS_PATH 更改为 require_once MODELS_PATH
    • 现在出现 未定义变量:member_model 错误。 Nvm 我会在每个函数中调用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 2020-05-09
    • 2020-06-09
    • 1970-01-01
    相关资源
    最近更新 更多