Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/*** This file is part of the Carbon package.** (c) Brian Nesbitt <brian@nesbot.com>** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/namespace Carbon\Laravel;use Carbon\Carbon;use Carbon\CarbonImmutable;use Carbon\CarbonInterval;use Carbon\CarbonPeriod;use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;use Illuminate\Events\Dispatcher;use Illuminate\Events\EventDispatcher;use Illuminate\Support\Carbon as IlluminateCarbon;use Illuminate\Support\Facades\Date;use Throwable;class ServiceProvider extends \Illuminate\Support\ServiceProvider{/** @var callable|null */protected $appGetter = null;/** @var callable|null */protected $localeGetter = null;public function setAppGetter(?callable $appGetter): void{$this->appGetter = $appGetter;}public function setLocaleGetter(?callable $localeGetter): void{$this->localeGetter = $localeGetter;}public function boot(){$this->updateLocale();if (!$this->app->bound('events')) {return;}$service = $this;$events = $this->app['events'];if ($this->isEventDispatcher($events)) {$events->listen(class_exists('Illuminate\Foundation\Events\LocaleUpdated') ? 'Illuminate\Foundation\Events\LocaleUpdated' : 'locale.changed', function () use ($service) {$service->updateLocale();});}}public function updateLocale(){$locale = $this->getLocale();if ($locale === null) {return;}Carbon::setLocale($locale);CarbonImmutable::setLocale($locale);CarbonPeriod::setLocale($locale);CarbonInterval::setLocale($locale);if (class_exists(IlluminateCarbon::class)) {IlluminateCarbon::setLocale($locale);}if (class_exists(Date::class)) {try {$root = Date::getFacadeRoot();$root->setLocale($locale);} catch (Throwable $e) {// Non Carbon class in use in Date facade}}}public function register(){// Needed for Laravel < 5.3 compatibility}protected function getLocale(){if ($this->localeGetter) {return ($this->localeGetter)();}$app = $this->getApp();$app = $app && method_exists($app, 'getLocale')? $app: $this->getGlobalApp('translator');return $app ? $app->getLocale() : null;}protected function getApp(){if ($this->appGetter) {return ($this->appGetter)();}return $this->app ?? $this->getGlobalApp();}protected function getGlobalApp(...$args){return \function_exists('app') ? \app(...$args) : null;}protected function isEventDispatcher($instance){return $instance instanceof EventDispatcher|| $instance instanceof Dispatcher|| $instance instanceof DispatcherContract;}}