gianfriaur / package-loader
Laravel 包管理
Requires
- php: ^8.1
- ext-pdo: *
- laravel/framework: v10.*
Requires (Dev)
- nunomaduro/collision: ^7.0
- orchestra/testbench: ^8.0
README
这只是为 laravel
的另一个包管理器,没有其他
但如果你想使用它,欢迎你
目标
在理想的世界里,我们都会成为标准
但这也意味着,如果有一个标准,我们的项目就不会是唯一的,对吗?
从这一点出发,我们可以说,并不是所有事情都可以按照现有的标准来做,或者简单地说,由于‘公司’的逻辑,这是不可能的
这个库的目的就是提供一个工具,它不会强制你一定要遵循一开始就决定的规则,如果你想的话,你可以根据自己的需要编写自己的逻辑,并期望一切都不会‘出错’
此外,因为你无法在你需要之前就想到你需要什么 😉
安装
需要包
composer require gianfriaur/package-loader
发布配置文件
php artisan vendor:publish --provider="Gianfriaur\PackageLoader\PackageLoaderServiceProvider"
首次设置
技巧
- 如果你觉得有用,你可以并行管理你的包的迁移和laravel的迁移 待办:文档:配置 vault 迁移策略
文档
你可以在这里找到完整的文档
压力测试 😍
我尽量将加载时间降低到合理的低水平
获得良好的结果
- 加载 10 个包:~2 毫秒
- 加载 100 个包:~10 毫秒
- 加载 1000 个包:~400 毫秒
你可以在这个测试中找到压力测试: tests/Stress/StressTest.php
为什么使用 LocalizationStrategy
由于 PackageProvider 继承自 ServiceProvider,我们可以思考为什么它被赋予了使用特定于加载翻译的策略的可能性,而不是直接使用 $this->loadTranslationsFrom($path,$namespace);
对于这个合理的问题,有一个非常简单的答案,如果对于每个 PackageProvider 都需要单独注册一个回调到 afterResolving
并检查 'translator' 服务是否已经解决,然后加载翻译,随着包的增加,这可能会导致性能下降。
是的,对于 100 个包,大约需要 50 毫秒
使用 DefaultLocalizationStrategy
服务,这只会做一次,只留下读取文件的时间
但是,嘿,使用它是免费的,但你可以在请求中节省一些时间
将来,将有一个命令被策略加载,这将允许你在生产中将所有包的翻译文件合并为一个,从而进一步减少加载所有翻译文件的时间