如何为 symfony 开发库,同时保持库代码框架独立

sci*_*uff 3 php github autoload symfony

我正在 Symfony 中创建一个应用程序,它使用我同时编写的库。

虽然我的应用程序是使用 symfony 构建的,但我希望组件库完全独立于框架,因为它需要可由不一定是用 symfony 编写的应用程序重用。

因此我有一个集成了库(组件)的 symfony 包

文件夹结构如下

src/MyVendor/
|-- Bundle
|   `-- MyComponentBundle
|       |-- Controller
|       |-- DependencyInjection
|       |-- Resources
|       |   |-- config
|       |   `-- views
|       |       `-- Default
|       |-- Tests
|           `-- Controller
|               `-- MyObjectControllerTest.php
|       `-- MyComponentBundle.php
`-- Component
    `-- MyComponent
        |-- doc
        |-- src
            `-- MyObject.php
        |-- test
            `-- MyObjectTest.php
        |-- .gitignore
        |-- composer.json
        |-- LICENSE
        |-- README.md
        `-- phpunit.xml.dist
Run Code Online (Sandbox Code Playgroud)

问题:

  1. MyComponent根据 PSR-x 自动加载标准,目录结构是否正确?例如,我如何使用MyObject捆绑包内的库,即MyObjectControllerTest.php

  2. 可以MyObject驻留在 的命名空间中MyVendor\MyComponent吗?如果没有,我必须如何修改目录结构,以便(1)我可以使用该名称空间,以及(2)以便它可以在内部自动加载MyObjectControllerTest.php,即new MyVendor\MyComponent\MyObject();可以工作;现在我得到了PHP Fatal error: Class 'MyVendor\MyComponent\MyObject' not found in ...

  3. 您能否引导我访问在线资源,以帮助我在 github 上发布MyComponent并使其可供 symfony 使用(我猜其中大部分只涉及正确设置composer.json)

谢谢

Ziu*_*min 5

  1. 它与 PSR-x 自动装载机兼容。但是您的命名空间应该正确注册(PSR-4PSR-0)。
  2. 您应该创建适当的自动加载来使用您的组件(例如,使用composer )。
  3. 只需在 github 上为您的组件创建一个存储库创建您的composer.json(或复制/粘贴并编辑一侧),在 packagist 上提交您的包(只需插入 github 项目链接)