Laravel 5.3 之前,是可以給容器傳參的。
解析容器的時候,是可以直接傳參數的。make有第二個參數
//自定義服務提供者
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class UeditorUploaderProvider extends ServiceProvider
{
public function boot() {}
public function register()
{
// 綁定到容器
$this->app->singleton('ueditorUploader', function ($app, $myParams) {
return new \App\Libraries\UeditorUploader($myParams);
});
}
}
控制器裏面這樣傳參:
$myParams = 123;
$up = app('ueditorUploader', $myParams);
或者
$up = app()->make('ueditorUploader', $myParams);
用門面的方法:
use App;
$up = App::make('ueditorUploader', $myParams);
思考: 可以用這種方法給有構造函數的類傳參。如果不便使用,則給你的類加個setParameter方法吧:
$up = App::make('foo');
$up->setParameter('a_name', 'a_value');