foxriver123

6611 经验值

app('Illuminate\Contracts\Hashing\Hasher')
容器的aliases数组有对应关系,所以getAlias方法 返回hash。通过getConcrete方法拿到容器bingdings数组里面对应的闭包,然后通过容器的build方法执行闭包取得实例。
app('Illuminate\Hashing\BcryptHasher')
容器的aliases数组找不到对应key,所以getAlias方法原样返回Illuminate\Hashing\BcryptHasher。然后通过getConcrete方法再次原样返回Illuminate\Hashing\BcryptHasher,然后通过容器的build方法利用php反射解析取得实例

准确的说app('hasher')第一次也是new.如果后面再次用到才是从容器的singleton数组里面取。