1. To set the configuration value at runtime, pass an array to the config function, which is reset in the middleware
config(['theme.view_storage' => 'file']);
2. The Singleton method binds a class or interface to a container that is only parsed once. Once the singleton binding is resolved, the same object instance will be returned to the container in subsequent calls. Because the previous configuration items are used when binding. Therefore, an error is reported at runtime. To print the instance, expect ViewStorage to be FileViewStorage, but in fact it is DbViewStorage. as shown in Figure 1

3. Decide to remove the resolved instance from the instance cache based on the ForgetInstance . Register again.
config(['theme.view_storage' => 'file']);
$this->forgetRegisterViewStorageInstance();
/**
* 从实例缓存中移除已解析的 ViewStorage 相关实例,再次注册。
* @return void
* @throws BindingResolutionException
*/
private function forgetRegisterViewStorageInstance() {
app()->forgetInstance(ViewFactoryRegistry::class);
// ...
//注册当前ViewStorage的全部服务
$viewFactoryRegistry = app()->make(ViewFactoryRegistry::class);
$viewFactoryRegistry
->getFactory(config('theme.view_storage'))
->register();
}
4. To print the instance again, it is expected that ViewStorage is FileViewStorage, but it is actually FileViewStorage. in line with expectations. as shown in Figure 2

需要长期技术维护或远程问题排查?
我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。
如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:
- ✅ PHP / Laravel / Yii2 老项目无人维护
- ✅ Go / Gin 后端接口需要排查或优化
- ✅ WordPress 网站访问慢、报错或插件冲突
- ✅ Nginx / MySQL / Redis / Linux 服务器异常
- ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
- ✅ 需要长期远程技术支持或兼职维护
更多介绍请查看:关于我 & 合作
微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan


发表回复