【问题标题】:object method write to object that contains in variable the first object对象方法写入到变量中包含第一个对象的对象
【发布时间】:2013-10-05 16:54:28
【问题描述】:

这应该是一个 MVC 框架 (我在边做边学)

class load{
    public function model(){
        // some code...
        [...] = model[$modelName] = new $modelName();
    }
}

这个类处理控制器中的所有加载选项..

class _framework{
    public $load; // object
    public $model; // array

    function __construct(){
        //some code...
        $this->load = new load();
    }
}

这是控制器的框架 控制器扩展了这个类。

编辑:

它应该像这样使用:

class newController extends _framework{
    public function index(){
        $this->load->model('modelName'); // for loading the model.
        $this->model['modelName']->modelMethod(); // for use the model method.
    }
}

我的问题是 [...]. 框架类中的数组如何获取新模型??

【问题讨论】:

  • model() 函数可以返回一个数组,然后将其分配给属性?
  • no.. 我编辑了问题以显示我使用它的人..
  • 您可能会从this list 的材料中受益。还有一个快速提示:不应该有“框架类”。

标签: php oop frameworks


【解决方案1】:

如果你想从你的模型对象中得到一个数组, 你可以定义它的公共方法toArray:

class modelName {
    public function toArray () {
        $array = ...; // get your array here
        return $array;
    }
}

然后你可以从外部调用它并获取你的数组:

$myArray = $myModel->toArray();

您的模型应该封装它的数据,并通过这样的 API 访问它们。

我不会将数组称为模型。模型是一个包含许多服务于模型目的的类的层 - 存储您的数据,执行它们的验证,以及任何其他与数据相关的业务逻辑并提供 API 来访问数据。

此外,大写您的类也很常见。

【讨论】:

  • 模型是我在控制器中加载的所有模型的数组,最终 $model 是一个包含模型对象的数组。这还是破旧的?
  • 尽量减少耦合总是好的,所以控制器不应该知道模型的精确结构,无论是数组还是其他任何东西。如果你需要一组模型,我会将它们封装成一个新模型,并提供控制器所需的 API。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
  • 2015-01-09
  • 2018-06-28
相关资源
最近更新 更多