我正在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
问题:
MyComponent
目录结构是否符合PSR-x自动加载标准?例如,我如何使用捆绑包内库中的MyObject
,即在MyObjectControllerTest.php
中MyObject
是否可以驻留在MyVendorMyComponent
的命名空间中?如果不是,我必须如何修改目录结构,以便(1)我可以使用该名称空间,以及(2)使其可以在MyObjectControllerTest.php
中自动加载,即new MyVendorMyComponentMyObject();
将起作用;现在我得到PHP Fatal error: Class 'MyVendorMyComponentMyObject' not found in ...
你能告诉我一个在线资源来帮助我在github上发布
MyComponent
并使其可用于symfony吗(我猜其中大部分只涉及正确设置composer.json)
感谢
- 它与PSR-x自动加载器兼容。但是您的命名空间应该正确注册(PSR-4、PSR-0)
- 您应该创建适当的自动加载来使用您的组件(例如,使用composer)
- 只需在github上为您的组件创建一个repo,创建您的
composer.json
(或复制/过去并编辑某个边),在packagegist上提交您的包(只需插入github项目链接)