日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Laravel Ioc容器singleton和bind方法的区别

發布時間:2025/7/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Laravel Ioc容器singleton和bind方法的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Laravel中使用Ioc容器的singleton方法和bind方法創建實例有什么區別呢?它們兩個都是返回一個類的實例,不同的是singleton是單例模式,而bind是每次返回一個新的實例,看下面的兩個例子。

1.Ioc容器bind方法

<?phprequire __DIR__.'/../bootstrap/autoload.php';class tanteng {public $name; }$container = new Illuminate\Container\Container();$container->bind('tanteng');$instance = $container->make('tanteng'); $instance->name = 'tanteng';$instance2 = $container->make('tanteng'); $instance2->name = 'tuntun';echo $instance->name.' '.$instance2->name;

輸出的結果:

tanteng tuntun

結論:

通過bind方法創建實例不是單例模式,而是創建新的實例。

2.Ioc容器singleton方法

<?phprequire __DIR__.'/../bootstrap/autoload.php';class single {public $value; }$container = new Illuminate\Container\Container();$container->singleton('single'); $instance3 = $container->make('single'); $instance4 = $container->make('single');$instance3->value = 'aaaa'; $instance4->value = 'bbbb';echo $instance3->value.' '.$instance4->value;

輸出結果:

bbbb bbbb

結論:

使用singleton創建實例使用的是單例模式,每次返回同一個實例。

以上代碼可以放在public下,如test.php運行。

再看框架底層代碼:

public function singleton($abstract, $concrete = null) {$this->bind($abstract, $concrete, true); }

發現singleton方法其實也是調用bind方法,只是最后一個參數是true,表示單例模式。框架源代碼:Illuminate/Container/Container.php

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Laravel Ioc容器singleton和bind方法的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。