En utilisant le package "jasny/sso", j'obtiens l'erreur suivante :
IlluminateContractsContainerBindingResolutionException Unresolvable dependency resolving [Parameter #0 [ <required> callable $getBrokerInfo ]] in class JasnySSOServerServer
JasnySSOServerServer.php Interne :
/** * 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(); }
J'ai aussi essayé :
php artisan route:clear composer dump-autoload php artisan optimize:clear
Quelqu'un peut-il signaler le problème ici ?
Étant donné que jasny/sso n'est pas un package Laravel, il ne doit pas être enregistré auprès du conteneur sans un ensemble d'instructions spécifiques sur la façon de l'instancier en fonction de son constructeur.
Ajoutez le code suivant dans la méthode
AppServiceProvider
的register()
:À partir de là, vous pouvez effectuer les opérations suivantes depuis n'importe où dans l'application :
Il remplira automatiquement le constructeur avec l'appelable et la CacheInterface que nous avons configurés dans la liaison (vous pouvez également utiliser
$app->singleton()
au lieu de la liaison si vous n'avez besoin que d'une seule instance de cette classe qui existe tout au long de l'exécution du script).Normalement, tout ce que vous enregistrez dans le conteneur sera affecté par l'injection de dépendances de Laravel, vous ne pouvez donc pas utiliser de types inconnus dans le constructeur car Laravel n'a aucun moyen de savoir ce qu'est
callable
, et cette erreur sera générée lorsque cela se produit.En général, si vous pouvez contrôler cela, vous pouvez supprimer la fonction appelable du constructeur et utiliser un setter sur la classe.