2014-04-28 20 views
2

我在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 

問題:

  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正確)

謝謝

+0

考慮選擇一個簡單的Symfony的組件如Yaml並遵循它的結構。 – Cerad

+0

謝謝,我確實看過,但我遇到的困難是,對於現有的Symfony組件,我發現該結構只是從組件的根開始,而不是在開發時放置根的結構。我的意思是在'vendors'文件夾中看到'symfony \ symfony \ src \ Symfony \ Component \ Yaml',這是發佈的目錄結構,但是我看不到如何添加'doc','test'和每個組件的'src'文件夾 – scibuff

+1

composer.json允許您指定供應商目錄結構。開發時,讓你自己的目錄結構。在你的情況下,你將擁有一個MyVendor/Component目錄,下面有對象庫。起初令人困惑,希望我能指出你一步一步的教程,但我不知道。 – Cerad

回答

2
  1. 這是一個與PSR-X自動加載機兼容。但是你的名字空間應該正確註冊(PSR-4,PSR-0)。
  2. 您應該創建適當的自動加載來使用您的組件(例如,using composer)。
  3. 您的組件在github,createcomposer.json只是create a repo(或複製/粘貼和編輯一些邊一個),提交您的包on packagist(剛插入的GitHub項目鏈接)
+1

對於私人回購,Satis(https://github.com/composer/satis)是一個入門Packagist替代品。 – kix

+0

謝謝,澄清了很多。我仍然不確定哪裏需要註冊名稱空間,而組件仍在開發中(即未提交到軟件包列表)。我用''autoload「來做到這一點:{」psr-0:「{」MyVendor:「path/to/src」}}' – scibuff

+1

10用composer做得更好,並且添加這個lib也可以使用作曲家作爲依賴。 – Ziumin

相關問題