使用其他类的函数扩展CakePHP的AppController

时间:2018-02-18 11:22:11

标签: cakephp cakephp-3.0

我不想通过函数从'库中的另一个类扩展默认的AppController类。应用程序根目录下的文件夹

在这一刻,我可以通过在类定义之上添加@property声明来达到课程及其功能,如下所示。但是当我运行应用程序时,它返回Call to a member function showTest() on boolean异常。这是因为我没有以这种方式声明命名空间或其他东西吗?

// Default class inside 'root/src/Controller/'
/**
* Class    AppController
*
* @property testControl $testControl
*
* @package     App\Controller
*/
class AppController extends Controller
{
    public function initialize() {
        parent::initialize();
    }

    public function beforeFilter(Event $event) : void
    {
       $this->testControl->showTest();
    }
}

// The class inside folder 'root/library/' 
class testControl
{
    public function showTest() {
        die("test");
    }
}

1 个答案:

答案 0 :(得分:1)

在调用方法之前,您需要创建testControl对象的新实例: -

public function beforeFilter(Event $event) : void
{
    $testControl = new testControl;
    $testControl->showTest();
}

您看到的PHP错误是因为您尚未启动该对象,并且$this->testControl尚未定义。

您还需要确保通过在文件顶部添加testControl语句或在启动对象时引用命名空间来告诉PHP在哪里找到use类。