我不想通过函数从'库中的另一个类扩展默认的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");
}
}
答案 0 :(得分:1)
在调用方法之前,您需要创建testControl
对象的新实例: -
public function beforeFilter(Event $event) : void
{
$testControl = new testControl;
$testControl->showTest();
}
您看到的PHP错误是因为您尚未启动该对象,并且$this->testControl
尚未定义。
您还需要确保通过在文件顶部添加testControl
语句或在启动对象时引用命名空间来告诉PHP在哪里找到use
类。