【发布时间】:2021-10-11 15:31:32
【问题描述】:
我想重写 Illuminate\Cache\Repository 类的方法 get() 为:
<?php
namespace App\Illuminate\Cache;
use Illuminate\Cache\Repository as BaseRepository;
class Repository extends BaseRepository{
public function get($key)
{
// changes
}
}
但我不知道如何告诉 Laravel 加载我的类而不是原来的类。
有什么办法吗?
编辑 1
我创建了一个macro(),但它仅在BaseRepository 中不存在该方法时才有效,例如:
这不起作用
use Illuminate\Cache;
Cache\Repository::macro('get',function (){
return 'hi';
});
但是,这行得通:
use Illuminate\Cache;
Cache\Repository::macro('newName',function (){
return 'hi';
});
所以macro 不能这样做,因为Laravel::macro() 正在创建一个新函数但没有覆盖
【问题讨论】:
标签: php laravel laravel-8 laravel-cache