57 lines
1.6 KiB
PHP
57 lines
1.6 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
namespace App\Providers;
|
||
|
|
|
||
|
|
use Illuminate\Contracts\Foundation\Application;
|
||
|
|
use Illuminate\Support\Facades\Config;
|
||
|
|
use Illuminate\Support\ServiceProvider;
|
||
|
|
use Kwaadpepper\Serial\Converters\BaseConverter;
|
||
|
|
use Kwaadpepper\Serial\Converters\BCMathBaseConverter;
|
||
|
|
use Kwaadpepper\Serial\Converters\GmpBaseConverter;
|
||
|
|
use Kwaadpepper\Serial\Converters\NativeBaseConverter;
|
||
|
|
use Kwaadpepper\Serial\SerialCasterBuilder;
|
||
|
|
use Kwaadpepper\Serial\Shufflers\FisherYatesShuffler;
|
||
|
|
use Kwaadpepper\Serial\Shufflers\Shuffler;
|
||
|
|
|
||
|
|
class SerialCasterServiceProvider extends ServiceProvider
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* Register any application services.
|
||
|
|
*
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
#[\Override]
|
||
|
|
public function register()
|
||
|
|
{
|
||
|
|
$this->app->singleton(
|
||
|
|
BaseConverter::class,
|
||
|
|
fn () => match (true) {
|
||
|
|
extension_loaded('bcmath') => new BCMathBaseConverter(),
|
||
|
|
extension_loaded('gmp') => new GmpBaseConverter(),
|
||
|
|
default => new NativeBaseConverter(),
|
||
|
|
}
|
||
|
|
);
|
||
|
|
|
||
|
|
$this->app->singleton(
|
||
|
|
Shuffler::class,
|
||
|
|
fn () => new FisherYatesShuffler()
|
||
|
|
);
|
||
|
|
|
||
|
|
$this->app->singleton(
|
||
|
|
SerialCasterBuilder::class,
|
||
|
|
function (Application $app) {
|
||
|
|
$converter = $app->make(BaseConverter::class);
|
||
|
|
$shuffler = $app->make(Shuffler::class);
|
||
|
|
|
||
|
|
$seed = Config::integer('serial-caster.seed');
|
||
|
|
|
||
|
|
return new SerialCasterBuilder($converter)
|
||
|
|
->withShuffler($shuffler)
|
||
|
|
->withSeed($seed);
|
||
|
|
}
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|