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

Php 如何为symfony开发库,同时保持库代码框架的独立性,php,symfony,github,autoload,Php,Symfony,Github,Autoload,我正在Symfony中创建一个应用程序,它正在使用我同时编写的库 虽然我的应用程序是用symfony构建的,但我希望组件库完全独立于框架,因为它需要被不一定用symfony编写的应用程序重用 因此,我有一个symfony包,它集成了库(组件) 文件夹结构如下所示 src/MyVendor/ |-- Bundle | `-- MyComponentBundle | |-- Controller | |-- DependencyInjection | |--

我正在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
问题:

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

  • MyObject
    是否可以驻留在
    MyVendor\MyComponent
    的命名空间中?如果没有,我必须如何修改目录结构,以便(1)我可以使用该名称空间,以及(2)它可以自动加载到
    MyObjectControllerTest.php
    ,即
    new MyVendor\MyComponent\MyObject()将工作;现在我发现
    PHP致命错误:在…中找不到类“MyVendor\MyComponent\MyObject”

  • 您能告诉我一个在线资源,帮助我在github上发布
    MyComponent
    ,并将其提供给symfony吗(我想大部分工作都只需要正确设置composer.json)

  • 多谢各位

  • 它与PSR-x自动装弹机兼容。但是您的名称空间应该正确注册(,)
  • 您应该创建适当的自动加载来使用组件(例如)
  • 仅针对github上的组件,您的
    composer.json
    (或复制/过去并编辑某个面),提交您的包(只需插入github项目链接)

  • 对于私人回购,Satis()是Packagist的替代品。谢谢你澄清了很多。当组件仍在开发中(即未提交给packagelist)时,我仍然不确定需要在何处注册名称空间。我是用代码还是composer.json用
    “autoload”:{“psr-0:{”MyVendor:“path/to/src”}最好用作曲家来做,也可以用作曲家把这个LIB添加到你的包中。考虑选择一个简单的SyfOffice组件,比如YAML并跟随它的结构。谢谢,我确实看到了,但是我的困难在于,用现有的SyfOffic组件,我看到结构只从组件的根开始,BU。我的意思是,在我看来,
    vendors
    文件夹中的
    symfony\symfony\src\symfony\Component\Yaml
    是已发布的目录结构,但我不知道如何为每个componentcomposer.json添加
    doc
    test
    src
    文件夹允许您指定供应商目录结构。在开发时,让您拥有自己的目录结构。在您的情况下,您将有一个MyVendor/Component目录,目录下有对象存储库。一开始很混乱,希望我能为您提供一个分步教程,但我不知道任何教程。在开发过程中,请在app/autoload.p中添加一行hp提供了类似:$loader->add('MyVendor',DIR./../../../MyVendor');谢谢,我确实尝试过,但仍然得到了类not found异常