singleton和bind都是返回一个类的实例,不同的是singleton是单例模式,而bind是每次返回一个新的实例
singleton
class fun {
public $strKey;
}
app()->singleton('fun', fun::class);
$fun1 = app()->make('fun');
$fun2 = app()->make('fun');
$fun1->strKey = "fun1";
$fun2->strKey = "fun2";
echo $fun1->strKey . ' ' . $fun2->strKey;
结果是 fun2 fun2
bind
class fun {
public $strKey;
}
app()->bind('fun', fun::class);
$fun1 = app()->make('fun');
$fun2 = app()->make('fun');
$fun1->strKey = "fun1";
$fun2->strKey = "fun2";
echo $fun1->strKey . ' ' . $fun2->strKey;
结果是 fun1 fun2
所以可以看出,singleton是一个单例,实例化后,每次操作会对之前的操作产生影响;而bind绑定的实例在实例化后,每次都会产生新的实例,实例之间互不影响。