es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Forma correcta de publicar clases personalizadas desde un paquete de Laravel

Digamos que estoy construyendo un paquete de Laravel, que tiene una jerarquía así:

PackageContainerClass > PackageClass > SomePackageClassMethod()

Quiero poder intercambiar la clase PackageClass por una clase de la aplicación principal App.

Sé que podría crear un archivo de configuración publicable config/package_config.php donde el usuario pueda reemplazar la ubicación de PackageClass y luego usarlo para crear un objeto de PackageClass en el paquete. Pero tengo bastantes clases que deben ser “intercambiadas” y realmente no siento que sea el enfoque correcto. ¿Cuál es el mejor enfoque para esto? ¿Hay algún tipo de “magia” en Laravel que desconozco?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hay un par de opciones para lograr la funcionalidad deseada de clases intercambiables en un paquete de Laravel:

    1. Utilizar el registro del proveedor de servicios de Laravel: Como desarrollador del paquete, puedes proporcionar un proveedor de servicios que registre las clases del paquete en el contenedor IoC de Laravel. Luego, el usuario puede registrar su propia implementación de la clase PackageClass utilizando el método App::bind().
    2. Utilizar el patrón de fachada: Puedes proporcionar una fachada para la clase PackageClass que el usuario pueda reemplazar por su propia implementación. Este enfoque tiene la ventaja adicional de proporcionar una API consistente para que el usuario acceda a la funcionalidad del paquete.

    3. Utilizar la composición en lugar de la herencia: En lugar de definir una jerarquía de clases, utiliza la composición para ensamblar la funcionalidad del paquete a partir de componentes más pequeños e intercambiables. Este enfoque suele ser más flexible y prueba-able que el uso de la herencia.

    En resumen, aunque publicar un archivo de configuración es una opción válida, existen otras aproximaciones disponibles que son más flexibles y proporcionan una API más limpia para el usuario. Cada una de estas opciones tiene sus propios compromisos, por lo que es importante elegir la que tenga más sentido para tu caso de uso particular.

Comments are closed.