如何在laravel 5.7中覆盖供应商方法?

时间:2019-03-05 08:29:48

标签: laravel

我尝试覆盖供应商类的方法:

namespace App\Providers\Rewritten;

use Illuminate\Queue\DatabaseQueue;

class MyDatabaseQueue extends DatabaseQueue
{

    protected function buildDatabaseRecord($queue, $payload, $availableAt, $attempts = 0)
    {
        //my code here
    }
}

我尝试像这样在AppServiceProvider中注册别名:

$loader = AliasLoader::getInstance();

$loader->alias(
            'Illuminate\Queue\DatabaseQueue',
            'App\Providers\Rewritten\MyDatabaseQueue'
        );

然后我有一个错误的谜题:

Class 'Illuminate\Queue\DatabaseQueue' not found

但是为什么呢?我不明白 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

尝试在AppServiceProvider.php中添加await

答案 1 :(得分:0)

您对alias()方法的参数顺序错误。代替:

$loader->alias(
    'Illuminate\Queue\DatabaseQueue',
    'App\Providers\Rewritten\MyDatabaseQueue'
);

您需要切换它们:

$loader->alias(
    'App\Providers\Rewritten\MyDatabaseQueue',
    'Illuminate\Queue\DatabaseQueue'
);

第一个参数是您的类,第二个参数是别名,这意味着旧类名称将是新类的别名。