apie / service-provider-generator

从 Symfony services.yaml 创建 Laravel 服务提供者

0.11.2 2024-04-23 16:10 UTC

This package is auto-updated.

Last update: 2024-09-23 17:02:14 UTC


README

服务提供者生成器

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require Code coverage

PHP Composer

此包是 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 中不存在私有服务。此外,如果您在您的包中使用这些功能,可能会被认为是坏习惯,因此很可能不会实现。