CakePHP 如何将 AppController 中的 $components 合并到我的应用程序的控制器中?

How does CakePHP merge $components from the AppController to my application’s controllers?

我在 https://book.cakephp.org/1.2/en/The-Manual/Developing-with-CakePHP/Controllers.html#the-app-controller 阅读了以下段落:

"While normal object-oriented inheritance rules apply, CakePHP also does a bit of extra work when it comes to special controller attributes, like the list of components or helpers used by a controller. In these cases, AppController value arrays are merged with child controller class arrays."

在我的 AppController class 我有这个:

var $components = array(
    'Security',
    'Pdf'
);

在扩展 AppController 的另一个控制器中,我有这个:

var $components = array(
    'Paypal'
);

既然理论是这样说的:

"AppController value arrays are merged with child controller class arrays"

这是否意味着在我的扩展 AppController 的控制器中,在这种情况下合并组件相当于具有以下可用组件?:

var $components = array(
    'Security',
    'Pdf',
    'Paypal'
);

谢谢。

根据https://book.cakephp.org/1.2/en/The-Manual/Developing-with-CakePHP/Controllers.html#the-app-controller

"CakePHP merges the following variables from the AppController to your application’s controllers: $components, $helpers and $uses."

根据这些信息,合并后,我的理解是最终结果是:

var $components = array(
    'Security',
    'Pdf',
    'Paypal'
);

您只能在使用 Paypal 组件声明的 class 中使用 3 个组件。另一个没有明确声明它的控制器手头只有 2 个原始组件。这是纵向继承,不是横向继承,有道理吗?

请注意,您引用的是一个非常过时的蛋糕版本的书。我明白,我自己也被 1.3 的恐龙困住了 :-)。但我发现查阅这本书的最新版本也很有用。虽然细节往往不同,但它更充实,而且往往能更好地解释一般原则。