首页 > 解决方案 > 我会在控制器中使用 self、static、this

问题描述

我像这样从另一个控制器扩展我的一个控制器:

类 ProductController 扩展 APIProductController

然后,现在我将使用一个 APIProductController 的函数,它在 ProductController 中命名为 ShowUser

<-------1------->
public function ShowUser()
{
    return $this->ShowUser();
}

<-------2------->
public function ShowUser()
{
    return static::ShowUser();
}

<-------3------->
public function ShowUser()
{
    return self::ShowUser();
}

标签: phplaravel

解决方案


您将需要使用parent关键字,以便在 Child 类中调用 Base 类的函数:

public function ShowUser()
{
    return parent::ShowUser();
}

来自PHP 文档

Example #3 调用父类的方法

class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // Override parent's definition
    public function myFunc()
    {
        // But still call the parent function
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

推荐阅读