使用“jasny/sso”包,我收到以下錯誤:
IlluminateContractsContainerBindingResolutionException Unresolvable dependency resolving [Parameter #0 [ <required> callable $getBrokerInfo ]] in class JasnySSOServerServer
JasnySSOServerServer.php 內部:
/** * 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(); }
我也嘗試過:
php artisan route:clear composer dump-autoload php artisan optimize:clear
有人能指出這裡的問題嗎?
由於 jasny/sso 不是 Laravel 套件,因此如果沒有基於其建構函數的一組關於如何實例化它的特定說明,則不應將其註冊到容器中。
在
AppServiceProvider
的register()
方法中加入以下程式碼:從那裡您可以在應用程式中的任何位置執行以下操作:
它會自動使用我們在綁定中設定的可呼叫物件和CacheInterface 填充建構函式(如果您只需要一個實例,也可以使用
$app->singleton()
而不是綁定)此類在整個腳本執行過程中都存在)。通常,您註冊到容器中的任何內容都會受到Laravel 的依賴注入的影響,因此您無法在建構函式中使用未知類型,因為Laravel 無法知道
callable
是什麼,並且會發生這種情況時會產生此錯誤。通常,如果您可以控制這一點,您可以從建構函數中刪除可呼叫函數,並在類別上使用 setter。