使用倍数$ this-> loadModel(' Model')或使用数组?

时间:2015-12-17 14:50:02

标签: cakephp cakephp-3.0

我在我的代码中使用了多个$this->loadModel('Model');,我想知道以这种方式使用性能(或其他时期)更好:$this->loadModel(['Model', 'Model2']);,我应该在哪里放置将使用哪种方法或以上?

public function edit($productId)
{
    $this->loadModel('Medias');
    //Code that uses the model

    $this->loadModel('Stores');
    $stores = $this->Stores->myStores($userId);

    $this->loadModel('Banners');
    //Code that uses the model
}

1 个答案:

答案 0 :(得分:1)

Controller/ModelAwareTrait::loadModel()没有数组,因此问题就解决了。

如果您的代码可能会在行动的某些部分之前提前有条件地返回,那么不对分组进行分组只会有意义/不同。还应注意,如果它们相关联,您可以通过魔法属性(如$this->Stores->Banners)访问相关模型。

如果您对性能感到疑惑,那么我建议您查看源代码并检查调用该方法时实际发生的情况。

<强> https://github.com/cakephp/cakephp/blob/3.1.5/src/Datasource/ModelAwareTrait.php#L88

默认情况下,该方法基本上包含对TableRegistry::get()的调用,并将返回值设置为控制器的动态属性。最终调用最终会在TableLocator::get()中进行,其中一些变形,注册表查找等正在进行,没有什么会对性能产生重大影响。

如果您想了解具体影响,请抓住自己的分析工具(例如Xdebug),并进行衡量。