Как переопределить класс из vendor package?

Как переопределить класс из vendor package?
Пытался сделать так:

App\Providers

namespace App\Providers;

use Barryvdh\Debugbar\Controllers\BaseController;
use Barryvdh\Debugbar\DataCollector\ModelsCollector;
use Illuminate\Support\ServiceProvider;

/**
 * Collector for Models.
 */
class ModelsCollectorCustom extends ModelsCollector
{

    public function collect()
    {
        ksort($this->models, SORT_NUMERIC);

        return ['data' => array_reverse($this->models), 'count' => $this->count];
    }
}


class DebugbarServiceProvider extends ServiceProvider
{

    public function register(){
        $this->app->when(BaseController::class)
            ->needs(ModelsCollector::class)
            ->give(function ($app) {
                return $app->make(ModelsCollectorCustom::class);
            });
    }
}

app.php конфиг

App\Providers\DebugbarServiceProvider::class,

но что-то новый класс не работает

P.S.

use Barryvdh\Debugbar\LaravelDebugbar;
use Barryvdh\Debugbar\ServiceProvider as BarrServiceProvider;

class DebugbarServiceProvider extends BarrServiceProvider
{
//    public function boot() {
//        parent::boot();
//        dump('butt');
//
//        $this->app->when(LaravelDebugbar::class)
//            ->needs(ModelsCollector::class)
//            ->give(function ($app) {
//                return $app->make(ModelsCollectorCustom::class);
//            });
//    }
    public function register(){
        parent::register();
        
        // $this->app->when(LaravelDebugbar::class)
        $this->app->when(BarrServiceProvider::class)
            ->needs(ModelsCollector::class)
            ->give(function ($app) {
                return $app->make(ModelsCollectorCustom::class);
            });
    }
}

Ответы (1 шт):

Автор решения: Vasin Yuriy

Есть похожий вопрос. Ключевое отличие от вашего подхода в том, что в app/config/app.php кроме регистрации класса производится подмена расширяемого:

'VendorClass' => 'App\Providers\NewServiceProvider',

но у меня и так не получилось, рабочее решение нашел тут. Смысл состоит в регистрации своего Service Provider с кодом:

public function register(): void
    {
      $this->app->singleton(
        // изначальный vendor class
        'Orchid\Platform\Http\Controllers\LoginController',
        // пользовательский class для замены
        'App\Http\Controllers\NewLoginController'
        );
    }
→ Ссылка