Si ha superado la etapa principiante en su capacitación PHP, ha oído hablar de PSR-0, un estándar de carga automática que define formas de incluir automáticamente las clases de PHP en su código sin tener que usar declaraciones como Request e incluir.
PSR-0 mira el espacio de nombres de una clase y discierna su ubicación en el disco duro de ese poco de información. Por ejemplo, la clase \ zend \ mail \ mensaje conduciría a /path/to/project/lib/vendor/zend/mail/message.php.che&&&]
PSR-0 también admite subrayos en los nombres de clases como una alternativa, para facilitar la transición de 5.2 y antes. Zend_mail_message también conduciría a /path/to/project/lib/vendor/zend/mail/message.php.che&&&]Compositor
proveedor/ vendor_name/ paquete_name/ SRC/ Vendor_name/ Paquete_name/ Classname.php # Vendor_name \ Packack_name \ classname pruebas/ Vendor_name/ Paquete_name/ ClassNametest.php # Vendor_name \ Packack_name \ ClassNametest
vendor/ vendor_name/ package_name/ src/ Vendor_Name/ Package_Name/ ClassName.php # Vendor_Name\Package_Name\ClassName tests/ Vendor_Name/ Package_Name/ ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
Los directorios "SRC" y "Pruebas" deben incluir nombres de directorio de proveedores y paquetes. Este es un artefacto de cumplimiento de PSR-0.
Por lo tanto, algunos desarrolladores de PHP altamente calificados se reunieron y organizan una sugerencia para un nuevo estándar: PSR-4.
psr-4
proveedor/ vendor_name/ paquete_name/ SRC/ Classname.php # Vendor_name \ Packack_name \ classname pruebas/ ClassNametest.php # Vendor_name \ Packack_name \ ClassNametest
vendor/ vendor_name/ package_name/ src/ ClassName.php # Vendor_Name\Package_Name\ClassName tests/ ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
porque PSR-0 no permite una ruta intercesiva entre ninguna parte del nombre de clase
Esto es muy importante: significa que la implementación de PSR-4, al tiempo que permite implementar paquetes mucho más limpios, sería mucho más complicado de implementar. Llamamos a PSR-4 orientado a los paquetes de autogestionamiento, porque favorece la limpieza del paquete antes de la simplicidad.
el enfoque elegido
Esto significa que podríamos poner nuestras clases en cualquier parte del código de paquete donde tenga sentido para nosotros como humanos, y aún usarlas sin problemas en PHP sin escribir técnicas de carga alternativa o recurrir a la carga manual.
además, el borrador establece explícitamente que un Autoloader de PSR-4 nunca debe arrojar excepciones ni aumentar errores simplemente porque se pueden registrar múltiples autoloaders, y si uno no puede cargar una clase, otros deberían tener la oportunidad de hacerlo, arrojando un error y detener el flujo rompe esta compatibilidad. Si se requiere información adicional sobre la falla, uno debe usar un registrador compatible con PSR-3 u otros medios arbitrarios.
como se ilustra en el archivo de ejemplo, usando el Autoloader PSR-4 para cargar clases de la siguiente estructura:
/path/to/paquetes/foo-bar/ SRC/ Baz.php # foo \ bar \ baz Qux/ Quux.php # foo \ bar \ qux \ quux pruebas/ Baztest.php # foo \ bar \ baztest Qux/ Quuxtest.php # foo \ bar \ qux \ quuxtest
/path/to/packages/foo-bar/ src/ Baz.php # Foo\Bar\Baz Qux/ Quux.php # Foo\Bar\Qux\Quux tests/ BazTest.php # Foo\Bar\BazTest Qux/ QuuxTest.php # Foo\Bar\Qux\QuuxTest
Php // instanciar el cargador $ loader = new \ Ejemplo \ PSR4AUTOTOLOADERClass; // Registre el Autoloader $ loader-> registrar (); // Registre los directorios base para el prefijo del espacio de nombres $ loader-> addnamespace ('foo \ bar', '/rath/to/paquete/foo-bar/src'); $ loader-> addnamespace ('foo \ bar', '/rath/to/paquete/foo-bar/tests');
register(); // register the base directories for the namespace prefix $loader->addNamespace('Foo\Bar', '/path/to/packages/foo-bar/src'); $loader->addNamespace('Foo\Bar', '/path/to/packages/foo-bar/tests');
Este ejemplo también ilustra el uso de múltiples carpetas por espacio de nombres único.
Conclusión
¿Cómo te sientes acerca de PSR-4? Háganos saber en los comentarios a continuación, o exprese su opinión en uno de los muchos debates.
de cualquier manera: no hay duda de que se está quedando autocruzizado por paquetes aquí para quedarse. Si no se acepta formalmente como estándar, entonces personalizado implementada por personas que lo necesitan. Depende de nosotros unirnos a la discusión y mejorar la noción lo suficiente como para llegar a este estado formal.
Preguntas frecuentes sobre PSR-0 y PSR-4 Autoloading
¿por qué PSR-4 introdujo cuando PSR-0 ya estaba? La estricta correlación de PSR-0 entre los espacios de nombres y la estructura del directorio condujo a directorios profundamente anidados, que no siempre fue práctico o eficiente. PSR-4 proporciona un enfoque más flexible, que permite a los desarrolladores mapear espacios de nombres a cualquier directorio, reduciendo la necesidad de anidación de directorio profundo.
sí, es posible usar PSR-0 y PSR-4 en el mismo proyecto. Sin embargo, es importante tener en cuenta que no deben usarse para que se encuentren a husil las mismas clases. El uso de ambos estándares puede ser beneficioso en grandes proyectos donde algún código heredado sigue el estándar PSR-0, mientras que el código más nuevo sigue el estándar PSR-4.
está en desuso? Esto significa que si bien todavía es funcional, no se recomienda su uso en nuevos proyectos. PSR-4 es el estándar recomendado para la autoinforme en php.
en PSR-4, trabajos de autolaading al asignar una parte del espacio de nombres a cualquier directorio. El resto del espacio de nombres se asigna a la estructura subdirectorio. Esto permite un enfoque más flexible y eficiente para la autoinforme.
PSR-4 ofrece varios beneficios, incluido un enfoque más flexible para el autoenvergamento, la necesidad reducida de la anidación profunda de los directorio y la eficiencia mejorada. También es el estándar recomendado para la autoinformación en PHP, por lo que es una buena opción para nuevos proyectos.
migrando de PSR-0 a PSR-4 implica cambiar los espacios de nombres de forma y los directorios se mapean. En PSR-4, una parte del espacio de nombres se puede asignar a cualquier directorio, y el resto del espacio de nombres se puede asignar a la estructura del subdirectorio. Esto puede requerir reestructurar la estructura del directorio de su proyecto.
PSR-4 requiere PHP 5.3 o posterior. Si está utilizando una versión anterior de PHP, deberá actualizar para usar PSR-4.
El futuro de la autoinformación en PHP es probable que continúe evolucionando, con nuevos estándares y prácticas introducidas como el lenguaje y su ecosistema evolucionar. Sin embargo, en el futuro previsible, PSR-4 es el estándar recomendado para la autoadeading en Php.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3