簡體   English   中英

如何從服務提供商內部更改Laravel容器屬性?

[英]How to change Laravel Container properties from within Service Provider?

Laravel像這樣將pathis綁定到Container中

$this->instance('path.lang', $this->langPath());   

在/vendor/laravel/framework/src/Illuminate/Foundation/Application.php中的bindPathsInContainer()中,我想將此路徑從服務提供商內部更改為其他路徑。

我知道容器實例可以通過服務提供商中的$ this-> app訪問,所以我認為可以

$this->app->instance('path.lang', 'my/path');

但是,這將返回“類實例不存在”。 誰能解釋這是怎么回事? 另外,為什么要引用容器的ANY屬性,如

$this->app->someProperty

導致這個錯誤? 有沒有辦法從服務提供商內部編輯someProperty? 注意:我知道可以通過擴展\\ Illuminate \\ Foundation \\ Application來完成此操作,如此處所述但我希望不必觸摸Laravel的默認文件即可完成此操作。

我認為路徑必須是絕對的:

php artisan tinker
app()->instance('path.lang', '/home/user/you/project/something/something/that/exists);

您也可以在AppServiceProvider中嘗試這樣:

$this->app->instance('path.lang', $this->app->resourcePath().DIRECTORY_SEPARATOR.'mylang');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM