0

我对这里发生的事情有点困惑,在我看来,它就像一个方法正在调用自己?我正在尝试了解 Magento 的模型。我正在从一个助手(目录/类别)回来,我接到了这个方法“GetCategories”的电话。我不知道这里发生了什么。如果有人能阐明这个代码片段,我将不胜感激。

  getCategories ( $parent,
          $recursionLevel = 0,
          $sorted = false,
          $asCollection = false,
          $toLoad = true     
              ){
                  $categories = $this->getResource()
                   ->getCategories($parent, $recursionLevel, $sorted, $asCollection,  $toLoad);
                   return $categories;
                  } 
4

2 回答 2

1

没有太多可以添加到@hakra 的答案。只是 Magento 特定逻辑的一部分。因此,要使用 Magento 模型,您应该知道,Magento 有 2 种类型的模型:普通模型和资源模型(我们也可以将分配块称为模型,作为视图模型 - 但这更多地连接到V部分MVC)。

资源模型被创建为仅包含与数据库相关的逻辑的数据库适配器,并且通常连接到某个数据库表,因此包含对该表进行 CRUD 操作的逻辑。所以你会经常看到这样的东西——因为简单someMethod是普通模型的一部分,但由于它包含与数据库相关的逻辑,所以方法的所有实现都移到了资源模型中,所以someMethod在普通模型中的主体会是这样的:

public function someMethod($args)
{
    return $this->getResource()->someMethod($args);
}
于 2012-09-29T15:45:58.357 回答
0

您发布的代码很难说。即使两个方法共享相同的名称 ( getCategories),也不一定意味着它们属于同一类甚至是对象。

如果你想知道你需要比较:

 var_dump($this === $this->getResource());

除此之外,在递归编程中,方法调用自身也很常见,因此递归。但是对于那段代码,它会碰壁。

所以从技术上讲,我会假设在你的例子中这不是完全相同的对象方法。

请注意,这个答案是独立于 Magento 的,这就是 PHP 的一般工作方式。

于 2012-09-29T14:12:49.480 回答