CakePHP $这个语法

时间:2016-06-20 17:04:02

标签: php cakephp

我一直在尝试学习CakePhp一段时间,但我仍然无法获得很多东西。我一直在看很多东西并观看视频。我只是想问一个非常简单的问题。

我一直在试图弄乱书签教程,我正在观看视频。在视频中,他烘焙了一个名为Validate的组件。在他输入的cmd中

bin/cake/bake component Validate

然后,ValidateComponent.php出现在控制器的组件文件夹中。现在他使用ValidateComponent.php转到BookmarksController并添加到initialize方法

$this->loadComponent('Validate');

我只想问一下验证这个词来自哪里?不应该是ValidateComponent吗?他从哪里获得loadComponent?我见过他使用$this->method();$this->method('string', [array]);我只想知道语法是如何工作的以及每个单词的含义。很抱歉很长的解释。我真的想学习,我真的很困惑。非常感谢你。

ValidateComponent.php

    <?php
namespace App\Controller\Component;

use Cake\Controller\Component;
use Cake\Controller\ComponentRegistry;

/**
 * Validate component
 */
 class ValidateComponent extends Component
{

/**
 * Default configuration.
 *
 * @var array
 */
protected $_defaultConfig = [];

public function validLimit($limit, $ default)
{
    if (is_numeric($limit)){
    return $limit;
}
return $default;
}

}

BookmarksController.php的一部分

 public function initialize()
{
    parent::initialize();

    $this->loadComponent('Validate');

}

我似乎找不到他在哪里得到“验证”这个词

2 个答案:

答案 0 :(得分:2)

应用程序中的每个控制器都扩展了基础控制器ControllerAppController,扩展了Controller

Controller有很多方法,其中一种方法是loadComponent()See Source

public function loadComponent($name, array $config = [])
     {
         list(, $prop) = pluginSplit($name);
         $this->{$prop} = $this->components()->load($name, $config);
     }

为什么要验证而不是ValidateComponent?

简答:后缀

See predefined suffix in App class

CakePHP使用后缀加载类,当你点击loadComponent()时你去ComponentRegistery类来注册组件,ComponentRegistery将调用App类来加载类。 __loadClass()

CakePHP中的几乎所有内容都有一个后缀,在你的情况下,ValidateComponent有Component后缀。

return App::className($class, 'Controller/Component', 'Component');Source

我希望这对你更有意义

答案 1 :(得分:1)

$这并不特别与蛋糕有关,而是PHP本身的一部分。在面向对象的上下文中,$ this仅指当前类。

$ this-&gt;某事指的是当前范围内的一个对象。这可以在当前类中,也可以在扩展或使用中。

$这 - &GT;东西();类似地指当前范围内的方法或功能。

如果使用诸如netbeans之类的IDE,您通常可以单击这些引用来查看它们引用的对象,例如,如果您确实使用Netbeans,则可以按住Ctrl键单击$ this-&gt; loadComponent(&# 39;验证&#39);看它所指的实际功能。

关于何处进行验证&#39;来自,它是你传递给那个对象的一个​​字符串。另一方面,它将在函数中使用,可能在switch或if语句中返回一些东西。

例如:

Public function loadComponent($type){
    If($type == 'Validation'){
     //do something
    }
}