我对这里发生的事情感到有些困惑,它看起来就像一个方法在呼唤自己?我正在尝试了解Magento的模型。我正在从助手(目录/类别)回来工作,我接到了这个方法“GetCategories”的电话。我不知道这里发生了什么。如果有人能够阐明这段代码,我非常感激。
getCategories ( $parent,
$recursionLevel = 0,
$sorted = false,
$asCollection = false,
$toLoad = true
){
$categories = $this->getResource()
->getCategories($parent, $recursionLevel, $sorted, $asCollection, $toLoad);
return $categories;
}
答案 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的常用方式。