Menggunakan pakej "jasny/sso", saya mendapat ralat berikut:
IlluminateContractsContainerBindingResolutionException Unresolvable dependency resolving [Parameter #0 [ <required> callable $getBrokerInfo ]] in class JasnySSOServerServer
JasnySSOServerServer.php Dalaman:
/** * Class constructor. * * @phpstan-param callable(string):?array{secret:string,domains:string[]} $getBrokerInfo * @phpstan-param CacheInterface $cache */ public function __construct(callable $getBrokerInfo, CacheInterface $cache) { $this->getBrokerInfo = Closure::fromCallable($getBrokerInfo); $this->cache = $cache; $this->logger = new NullLogger(); $this->session = new GlobalSession(); }
Saya juga mencuba:
php artisan route:clear composer dump-autoload php artisan optimize:clear
Bolehkah sesiapa menunjukkan masalah di sini?
Memandangkan jasny/sso bukan pakej Laravel, ia tidak sepatutnya didaftarkan dengan bekas tanpa set arahan khusus tentang cara untuk membuat instantiat berdasarkan pembinanya.
Tambah kod berikut dalam kaedah
AppServiceProvider
的register()
:Dari situ anda boleh melakukan perkara berikut dari mana-mana sahaja dalam apl:
Ia secara automatik akan mengisi pembina dengan boleh panggil dan CacheInterface yang kami sediakan dalam pengikatan (anda juga boleh menggunakan
$app->singleton()
dan bukannya pengikatan jika anda hanya memerlukan satu contoh kelas ini yang wujud sepanjang pelaksanaan skrip).Biasanya apa-apa sahaja yang anda daftarkan ke dalam bekas akan dipengaruhi oleh suntikan kebergantungan Laravel, jadi anda tidak boleh menggunakan jenis yang tidak diketahui dalam pembina kerana Laravel tidak mempunyai cara untuk mengetahui apa itu
callable
, dan ralat ini akan dijana apabila itu berlaku .Biasanya, jika anda boleh mengawal ini, anda boleh mengalih keluar fungsi boleh panggil daripada pembina dan menggunakan penetap pada kelas.