Laravel/Lumen 核心应用程序中的覆盖方法
Override Method in Laravel/Lumen Core Application
是否可以覆盖 Laravel/Lumen Application
class 中定义的函数?
例如Lumen中isDownForMaintenance
的定义Application
class:
public function isDownForMaintenance() : bool
{
return false;
}
我想像这样用我自己的实现覆盖它:
public function isDownForMaintenance() : bool
{
// Do something…
}
我试过了……
AppServiceProvider.php
$this->app->extend(‘app’, function () {
return new Application; // Extension of Laravel/Lumen/Application
});
Application.php
class Application extends BaseApplication
{
public function isDownForMaintenance() : bool
{
// Do Something…
}
}
在浏览整个网络后,我偶然发现了一篇文章,其中 完全 概述了我正在寻找的内容。为了简单起见,我将概述如何扩展 Laravel 和 Lumen 的核心 Application
class,但对于那些希望看到更深入描述的人,请参阅这里:
https://mattstauffer.com/blog/extending-laravels-application/
这出人意料,非常简单...首先,我们找到创建 Application
的位置,即 /bootstrap/app.php
然后,我们找到下面一行:
Laravel
$app = new Illuminate\Foundation\Application(
realpath(__DIR__.'/../')
);
流明
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
然后很简单地改成这样:
$app = new Custom\Application(
realpath(__DIR__.'/../')
);
然后您可以使用 `Custom\Application' 做任何您喜欢的事情,例如;
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';
}
}
是否可以覆盖 Laravel/Lumen Application
class 中定义的函数?
例如Lumen中isDownForMaintenance
的定义Application
class:
public function isDownForMaintenance() : bool
{
return false;
}
我想像这样用我自己的实现覆盖它:
public function isDownForMaintenance() : bool
{
// Do something…
}
我试过了……
AppServiceProvider.php
$this->app->extend(‘app’, function () {
return new Application; // Extension of Laravel/Lumen/Application
});
Application.php
class Application extends BaseApplication
{
public function isDownForMaintenance() : bool
{
// Do Something…
}
}
在浏览整个网络后,我偶然发现了一篇文章,其中 完全 概述了我正在寻找的内容。为了简单起见,我将概述如何扩展 Laravel 和 Lumen 的核心 Application
class,但对于那些希望看到更深入描述的人,请参阅这里:
https://mattstauffer.com/blog/extending-laravels-application/
这出人意料,非常简单...首先,我们找到创建 Application
的位置,即 /bootstrap/app.php
然后,我们找到下面一行:
Laravel
$app = new Illuminate\Foundation\Application(
realpath(__DIR__.'/../')
);
流明
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
然后很简单地改成这样:
$app = new Custom\Application(
realpath(__DIR__.'/../')
);
然后您可以使用 `Custom\Application' 做任何您喜欢的事情,例如;
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';
}
}