Php Laravel/Lumen堆芯应用中的覆盖方法

Php Laravel/Lumen堆芯应用中的覆盖方法,php,laravel,lumen,Php,Laravel,Lumen,是否可以覆盖在Laravel/Lumen应用程序类中定义的功能 例如,这是Lumen应用程序类中的IsDownformaMaintenance的定义: public function isDownForMaintenance() : bool { return false; } 我想用我自己的实现来覆盖它,如下所示: public function isDownForMaintenance() : bool { // Do something… } 我试过… AppServi

是否可以覆盖在Laravel/Lumen
应用程序
类中定义的功能

例如,这是Lumen
应用程序
类中的
IsDownformaMaintenance
的定义:

public function isDownForMaintenance() : bool
{
    return false;
}
我想用我自己的实现来覆盖它,如下所示:

public function isDownForMaintenance() : bool
{
    // Do something…
}
我试过… AppServiceProvider.php

Application.php


在浏览了整个网络之后,我偶然发现了一篇文章,它准确地勾勒出了我所寻找的内容。为了简单起见,我将概述如何扩展Laravel&Lumen的核心
应用程序
类,但对于那些希望看到更深入描述的人,请参见此处:

这是令人惊讶的,非常简单。。。首先,我们找到创建
应用程序的位置,即
/bootstrap/app.php

然后,我们找到以下行:

拉维尔 流明 然后简单地换成这样:

$app = new Custom\Application(
    realpath(__DIR__.'/../')
);
例如,您可以使用“自定义\应用程序”执行任何您喜欢的操作

class Application extends BaseApplication
{
    // Override the maintenance mode detection...
    public function isDownForMaintenance() : bool
    {
        // Do Something…
    }

    // Override the default storage path...
    public function storagePath()
    {
        return $this->basePath.'/custom/storage';
    }
}

还有一种方法可以在不重写方法的情况下完成,如果您愿意,可以使用中间件@Maraboc这个函数的问题是,这个特定的函数是从不同的地方调用的,例如,QueueManagerI使用Middleware看到它不能帮助的:p
$app = new Illuminate\Foundation\Application(
    realpath(__DIR__.'/../')
);
$app = new Laravel\Lumen\Application(
    realpath(__DIR__.'/../')
);
$app = new Custom\Application(
    realpath(__DIR__.'/../')
);
class Application extends BaseApplication
{
    // Override the maintenance mode detection...
    public function isDownForMaintenance() : bool
    {
        // Do Something…
    }

    // Override the default storage path...
    public function storagePath()
    {
        return $this->basePath.'/custom/storage';
    }
}