apie / service-provider-generator
从 Symfony services.yaml 创建 Laravel 服务提供者
0.11.2
2024-04-23 16:10 UTC
Requires
- illuminate/support: 7.*|8.*|9.*|10.*
- symfony/dependency-injection: 6.*
- symfony/yaml: 6.*
Requires (Dev)
- phpunit/phpunit: 10.*
- symfony/finder: 6.*
README
服务提供者生成器
此包是 Apie 库的一部分。
文档
编写框架无关代码的一个问题是,大多数框架都有不同的方式在它们的服务容器中注册类。
- Symfony 框架通过配置文件、属性和自动装配工作。
- Laravel 通过自动装配一切或在 ServiceProvider 中编写 PHP 代码以实例化特定服务。
如果我们希望我们的代码是框架无关的,我们需要一种方法来确保我们不需要维护两个 '服务容器注册表'。
这就是这个库发挥作用的地方。我们使用 Symfony yaml 配置文件作为基础,并让它生成一个 Laravel 可以使用的 ServiceProvider 类。这样我们就可以让我们的库轻松工作
代码使用
这个类只创建一个包含源代码的字符串,您必须手动将其存储在文件中(推荐)或使用 '邪恶' 的 eval() 方法。
<?php use Apie\ServiceProviderGenerator\ServiceProviderGenerator; $generator = new ServiceProviderGenerator(); file_put_contents('/src/ExampleServiceProvider.php', $generator->generateClass(App\ExampleServiceProvider::class, 'resources/config/example-service.yaml'));
支持的 Symfony 依赖注入功能
以下是所有支持的功能列表。由于转换不是平凡的,或者 Laravel 没有支持它而需要黑客手段,所以支持的内容不多。例如,Laravel 中不存在私有服务。此外,如果您在您的包中使用这些功能,可能会被认为是坏习惯,因此很可能不会实现。