Php 如何为symfony开发库,同时保持库代码框架的独立性
我正在Symfony中创建一个应用程序,它正在使用我同时编写的库 虽然我的应用程序是用symfony构建的,但我希望组件库完全独立于框架,因为它需要被不一定用symfony编写的应用程序重用 因此,我有一个symfony包,它集成了库(组件) 文件夹结构如下所示Php 如何为symfony开发库,同时保持库代码框架的独立性,php,symfony,github,autoload,Php,Symfony,Github,Autoload,我正在Symfony中创建一个应用程序,它正在使用我同时编写的库 虽然我的应用程序是用symfony构建的,但我希望组件库完全独立于框架,因为它需要被不一定用symfony编写的应用程序重用 因此,我有一个symfony包,它集成了库(组件) 文件夹结构如下所示 src/MyVendor/ |-- Bundle | `-- MyComponentBundle | |-- Controller | |-- DependencyInjection | |--
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
问题:
MyComponent
目录结构是否正确?例如,如何使用捆绑包中的库中的MyObject
,即MyObjectControllerTest.php
MyObject
是否可以驻留在MyVendor\MyComponent
的命名空间中?如果没有,我必须如何修改目录结构,以便(1)我可以使用该名称空间,以及(2)它可以自动加载到MyObjectControllerTest.php
,即new MyVendor\MyComponent\MyObject()代码>将工作;现在我发现PHP致命错误:在…中找不到类“MyVendor\MyComponent\MyObject”
MyComponent
,并将其提供给symfony吗(我想大部分工作都只需要正确设置composer.json)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异常