CAKEPHP插件开发:在另一个组件中使用自定义组件。
#php #cakephp

在传统的CakePHP应用程序开发中,即,如果您不构建pluigin并想在另一个组件中使用自定义组件,则CakePHP文档说您应该简单地在具有数组值的受保护属性中注册该组件的名称您要使用的自定义组件的名称,例如:protected $components = ['Existing'];
让我们以一个例子:

// src/Controller/Component/CustomComponent.php
namespace App\Controller\Component;

use Cake\Controller\Component;

class CustomComponent extends Component
{
    // The other component your component uses
    protected $components = ['Existing'];

    // Execute any other additional setup for your component.
    public function initialize(array $config): void
    {
        $this->Existing->foo();
    }

    public function bar()
    {
        // ...
    }
}

// src/Controller/Component/ExistingComponent.php
namespace App\Controller\Component;

use Cake\Controller\Component;

class ExistingComponent extends Component
{
    public function foo()
    {
        // ...
    }
}

这次我们想在Cakephp插件中使用自定义组件的情况如何?
简单的。我们可以通过将插件名称在组件的名称之前的前缀之前进行,这样做:protected $components = ['PluginName.Existing'];
让我们以一个例子:

// src/Controller/Component/CustomComponent.php
namespace App\Controller\Component;

use Cake\Controller\Component;

class CustomComponent extends Component
{
    // The other component your component uses
    protected $components = ['PluginName.Existing'];

    // Execute any other additional setup for your component.
    public function initialize(array $config): void
    {
        $this->Existing->foo();
    }

    public function bar()
    {
        // ...
    }
}

// src/Controller/Component/ExistingComponent.php
namespace App\Controller\Component;

use Cake\Controller\Component;

class ExistingComponent extends Component
{
    public function foo()
    {
        // ...
    }
}

同样的原则适用于助手,行为等。

应该全部。有时,这可能会造成混淆,尤其是在您搜索这些概念时您获得的结果通常会使您进入传统的CakePHP文档时获得的结果。

这是plugin specific documentation的更多信息。

我在twitter