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

时间:2017-06-16 15:12:58

标签: php cakephp cakephp-1.2

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

  

“虽然正常的面向对象继承规则适用,但是当涉及特殊控制器属性时,CakePHP也会做一些额外的工作,例如控制器使用的组件或帮助程序列表。在这些情况下,AppController值数组被合并使用子控制器类数组。“

在我的AppController类中,我有这个:

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

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

var $components = array(
    'Paypal'
);

由于理论说明了这一点:

  

“AppController值数组与子控制器类数组合并”

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

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

谢谢。

2 个答案:

答案 0 :(得分:1)

您只能使用Paypal组件声明的类中有3个组件。另一个没有明确声明它的控制器只有2个原始组件。这是垂直继承,而不是横向继承,如果这有意义吗?

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

答案 1 :(得分:-1)

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

  

“CakePHP将以下变量从AppController合并到应用程序的控制器:$ components,$ helpers和$ uses。”

基于该信息,在合并之后,我理解的是最终结果将是:

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