Cómo desarrollar bibliotecas para Symfony manteniendo el marco de código de la biblioteca independiente

Estoy creando una aplicación en Symfony que está usando una biblioteca que estoy escribiendo al mismo time.

Mientras mi aplicación está siendo desarrollada con Symfony, quiero que la librería de componentes sea completamente independiente del framework ya que necesita ser reutilizable por aplicaciones que no necesariamente están escritas en Symfony.

Por lo tanto, tengo un package Symfony que integra la biblioteca (el componente)

La estructura de la carpeta es la siguiente

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 

Preguntas:

  1. ¿ MyComponent estructura de directorys de MyComponent es correcta según los estándares de autocargador PSR-x? Por ejemplo, ¿cómo uso MyObject desde la biblioteca dentro del package, es decir, en MyObjectControllerTest.php

  2. ¿ MyObject puede residir en el espacio de nombres de MyVendor\MyComponent ? Si no, ¿cómo debo modificar la estructura del directory para que (1) pueda usar ese espacio de nombres y (2) para que pueda MyObjectControllerTest.php automáticamente dentro de MyObjectControllerTest.php , es decir, new MyVendor\MyComponent\MyObject(); trabajará; ahora mismo estoy obteniendo PHP Fatal error: Class 'MyVendor\MyComponent\MyObject' not found in ...

  3. ¿Podría dirigirme a un recurso en línea para ayudarme a publicar MyComponent en github y ponerlo a disposition de Symfony (supongo que la mayor parte de eso implica simplemente configurar composer.json correctamente).

Gracias

  1. Es compatible con autocargadores PSR-x. Pero sus espacios de nombres deben estar debidamente registrados ( PSR-4 , PSR-0 ).
  2. Debe crear una carga automática adecuada para usar su componente ( usando el compositor , por ejemplo).
  3. Simplemente cree un repository para su componente en github, cree su composer.json (o copie / pase y edite uno de los lados), envíe su package en packagist (solo inserte el enlace del proyecto github)
    Intereting Posts