Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 调用控制器的laravel index函数时的自动调用函数_Php_Laravel_Oop_Inheritance - Fatal编程技术网

Php 调用控制器的laravel index函数时的自动调用函数

Php 调用控制器的laravel index函数时的自动调用函数,php,laravel,oop,inheritance,Php,Laravel,Oop,Inheritance,我有一个控制器类,如下所示: class Controller extends BaseController{ protected function function1() { //code } protected function function2() { //code } } 项目中的每个控制器都扩展了这个类,这样我就可以在这个控制器类中编写多个控制器中使用的函数 class RandomController extends Controller{ pub

我有一个控制器类,如下所示:

class Controller extends BaseController{

protected function function1()
{
    //code
}

protected function function2()
{
     //code
}
}
项目中的每个控制器都扩展了这个类,这样我就可以在这个控制器类中编写多个控制器中使用的函数

class RandomController extends Controller{

    public function aCertainFunction()
    {
        $this->function1();
        //code 
    {
}
我现在有一个函数,每次调用任何控制器的索引函数时都应该调用它。 一种选择是,我在我拥有的控制器中的每个索引函数的开始处手动添加此函数,并且我对将来创建的每个新控制器都会继续这样做,但这对我来说似乎并不有效


是否有一种方法可以在我的控制器类中定义此函数,以便从该类继承的所有类中的每个索引函数都将自动调用此函数?

您肯定应该看看嵌入在Laravel框架中的函数。我们承认,每次执行
function1
function2
时,您都希望触发
aCertainFunction()

您必须声明一个事件类,该类将存储到
名称空间App\Events(您根本不需要扩展控制器,因为它专用于其他用途)

当您使用
Event()
函数触发事件时,将调用事件类的public
handle
函数来执行。因此,您将直接在事件类中声明
aCertainFunction
函数(并从
handle
函数调用它)。请深入了解Laravel是如何处理事件的,因为它真正致力于授权,并根据特定目的调用它们(这就是为什么我们称它们为“侦听器”)。

阅读观察者模式,然后Laravel doc将帮助您实现这一良好方式