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



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

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

因此,我有一个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

问题:

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

  2. MyObject是否可以驻留在MyVendorMyComponent的命名空间中?如果不是,我必须如何修改目录结构,以便(1)我可以使用该名称空间,以及(2)使其可以在MyObjectControllerTest.php中自动加载,即new MyVendorMyComponentMyObject();将起作用;现在我得到PHP Fatal error: Class 'MyVendorMyComponentMyObject' not found in ...

  3. 你能告诉我一个在线资源来帮助我在github上发布MyComponent并使其可用于symfony吗(我猜其中大部分只涉及正确设置composer.json)

感谢

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

最新更新