调用自己的getCategories方法?

时间:2012-09-29 14:08:07

标签: php magento

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

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

2 个答案:

答案 0 :(得分:1)

添加到@ hakra的答案并不多。只是Magento特定逻辑的一部分。 因此,要使用Magento模型,您应该知道,Magento有两种类型的模型:普通模型和资源模型(我们也可以将模块调用分配给模型,作为视图模型 - 但是更多地与相关联V MVC的一部分。)

资源模型是作为DB适配器创建的,它只包含与DB相关的逻辑,并且通常连接到某个DB表,因此包含该表的CRUD操作逻辑。所以你会经常看到这样的smth - 因为简单someMethod是普通模型的一部分,但由于它包含与DB相关的逻辑,所以该方法的所有实现都被移到了资源 model,因此常规模型中someMethod的主体将是这样的:

public function someMethod($args)
{
    return $this->getResource()->someMethod($args);
}

答案 1 :(得分:0)

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

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

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

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

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

请注意,这个答案独立于Magento,这正是PHP的常用方式。