This course is still being released! Check back later for more chapters.

Get Notified About this Course!

We will send you messages regarding this course only
and nothing else, we promise.
You can unsubscribe anytime by emailing us at:
privacy@symfonycasts.com
Login to bookmark this video
Buy Access to Course
02.

La clase bundle

|

Share this awesome video!

|

Tenemos un hogar para nuestro bundle dentro de nuestra aplicación. Y hemos configurado su archivocomposer.json para que esté marcado como paquete para Composer. Ahora necesita una "clase bundle" para que Symfony pueda cargarlo como un bundle.

Esta clase es el corazón de tu bundle, el punto de entrada principal.

En el directorio src/, crea una nueva clase PHP... llámala ObjectTranslationBundle. Pero espera, tenemos un pequeño contratiempo. El "campo namespace" no está siendo rellenado por PhpStorm como suele ser habitual. PhpStorm aún no conoce el espacio de nombres de nuestro bundle.

Sal de este diálogo por ahora. En el archivo composer.json de nuestro bundle, establecemos que el espacio de nombres de nuestro directorio src/ sea SymfonyCasts\ObjectTranslationBundle\.

Copia el espacio de nombres. Aquí tenemos que ayudar un poco a PhpStorm.

Actualizar tu espacio de nombres en PHPStorm

Navega hasta la configuración de tu PhpStorm y busca la sección "Directorios". Esta es la estructura actual de nuestro proyecto. Abre object-translation-bundle y haz clic en el directorio src. Arriba, márcalo como "Fuentes". Ahora PhpStorm sabe que es un directorio "fuentes", y lo ha añadido aquí a la derecha.

Haz clic en el pequeño icono del lápiz para establecer el espacio de nombres, o "prefijo del paquete" para esta fuente. Pega, elimina las barras inclinadas adicionales y haz clic en "Aceptar".

Pulsa "Aplicar" y "Aceptar" para guardar esta actualización, y cierra el archivo composer.json.

Crear tu clase

De nuevo, crea una nueva clase PHP en el directorio src/ de nuestro bundle. ¡Genial! ¡El espacio de nombres ya está rellenado! Llámala ObjectTranslationBundle.

Esta es nuestra clase bundle. Primero, márcala como final - no queremos que nadie extienda esto. Déjala vacía por ahora y haz que extienda AbstractBundledesde el componente HttpKernel:

// ... lines 1 - 2
namespace SymfonyCasts\ObjectTranslationBundle;
use Symfony\Component\HttpKernel\Bundle\AbstractBundle;
final class ObjectTranslationBundle extends AbstractBundle
{
}

Clase bundle mejorada

Si alguna vez has construido bundles en el pasado, concretamente antes de Symfony 6, puede que recuerdes que las clases bundle solían extender Bundle, no AbstractBundle.

En Symfony 6, se ha mejorado la forma de construir bundles. La nueva clase AbstractBundleproporciona un enfoque más racionalizado para el desarrollo de bundles. Ahora puedes alojar casi toda la configuración de tu bundle y la lógica de extensión directamente dentro de tu clase "bundle". La forma antigua requería varias clases adicionales. Consulta esta entrada de blog para obtener más información.

A continuación, ¡vamos a "instalar" este bundle en nuestra aplicación!