Php Laravel/Lumen堆芯应用中的覆盖方法
是否可以覆盖在Laravel/LumenPhp 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
应用程序
类中定义的功能
例如,这是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';
}
}