Прежде чем ответить, я рекомендую fork посылку, внесите свои изменения и используйте свою вилку.Потому что, если что-то изменится в пакете, ваше переопределение может больше не работать.
Давайте посмотрим на пакет.
У вас есть 3 важных файла:
Валюта, которую вы хотите расширить: https://github.com/Casinelli/Currency/blob/master/src/Casinelli/Currency/Currency.php
Фасад, который вы хотите использовать: https://github.com/Casinelli/Currency/blob/master/src/Casinelli/Currency/Facades/Currency.php
И, наконец, ServiceProvider, который регистрирует класс, который вы хотите расширить: https://github.com/Casinelli/Currency/blob/master/src/Casinelli/Currency/CurrencyServiceProvider.php#L60
Поставщик услуг зарегистрирует class
валюту как одиночную с псевдонимом currency
Затем, когда вы вызываете facade
валюту, он будет выглядетьдля псевдонима currency
и возврата экземпляра class
валюты.
Реализация собственной валюты
Чтобы использовать собственную валюту class
, выВам нужно будет зарегистрировать собственную реализацию валюты class
в сервис-провайдере, который заменит сервис-провайдера пакета.
Создайте свой собственный сервис-провайдер
$ php artisan make:provider ExtendedCurrencyServiceProvider
В вашем файле app/config/app.php
,
Замените Casinelli\Currency\CurrencyServiceProvider::class,
на App\Providers\ExtendedCurrencyServiceProvider::class,
- У вашего нового поставщика услуг измените на
<?php
namespace App\Providers;
use Casinelli\Currency\CurrencyServiceProvider;
class ExtendedCurrencyServiceProvider extends CurrencyServiceProvider
{
/**
* Register currency provider.
*/
public function registerCurrency()
{
$this->app->singleton('currency', function ($app) {
return new App\Yournamespace\CurrencyClass($app);
});
}
}
Laravel 5.5 + В вашем composer.json
удалите поставщика услуг из автообнаружения "extra": {
"laravel": {
"dont-discover": [
"Casinelli\\Currency\\CurrencyServiceProvider"
]
}
},
Теперь, когда вы будете звонить \Currency::rounded()
это вызовет вашу собственную реализацию валюты.
Вам не нужно менять Фасад.