Como desarrollador de PHP, puede estar interesado en trabajar con marcos. Los marcos intentan facilitar el proceso de desarrollo al simplificar las prácticas comunes utilizadas en la mayoría de los proyectos web en desarrollo, como paquetes, módulos, complementos e incluso componentes (CakePHP).
Quizás durante el proceso de desarrollo, sienta que está reinventando la rueda, como cuando crea una aplicación de Autenticación o Captcha. En este caso, necesita crear un paquete que simplifique y haga que el desarrollo de su aplicación sea más rápido y más fácil..
Hay dos tipos de paquetes; algunos son marco independiente (independiente) y los otros son para un marco específico. Este tutorial cubrirá exclusivamente los paquetes de Laravel..
Antes de crear un paquete, necesita saber acerca de los administradores de paquetes. PEAR es un conocido gestor de paquetes PHP que, aunque está disponible, rara vez se utiliza. ¿Por qué? Le obligó a instalar paquetes en todo el sistema, en lugar de hacerlo proyecto por proyecto. El compositor se convirtió en el sucesor de PEAR..
Uno de los parámetros para escalar la potencia del marco es cómo el desarrollador redistribuye paquetes de código útiles. Esto permite a los desarrolladores resumir las aplicaciones en varios paquetes de aplicaciones más pequeñas.
De hecho, los paquetes ofrecen una gran manera de agrupar código relacionado. Los paquetes son muy similares a "Componentes". Es importante tener en cuenta que el código fuente de Laravel es un "paquete", que Taylor Otwell llama el DEFAULT_BUNDLE
.
Una gran ventaja de los paquetes Laravel es que permiten el acceso a todas las funciones que ofrece el marco a su aplicación host, incluyendo enrutamiento, migraciones, pruebas, vistas y muchas otras características útiles. Otra ventaja importante de un paquete es el principio DRY (Don't Repeat Yourself). Al crear un paquete para el código que usa con frecuencia, ahorra recursos y mejora el rendimiento de su aplicación.
Ahora vamos a introducir algunos paquetes útiles de Laravel. Los paquetes que he usado incluyen:
Puede encontrar la capacidad de embalaje que necesita en packalyst. Packalyst crea un registro de paquetes simple y social para Laravel..
Crear un paquete de autenticación simple para Laravel 5.0. Para ello, en primer lugar necesitas un compositor.json
archivo para su nuevo paquete:
"nombre": "alireza / myauth", "descripción": "Cómo crear su paquete laravel 5", "licencia": "MIT", "autores": ["nombre": "Alireza Rahmani khalili", "correo electrónico ":" [email protected] "]," estabilidad mínima ":" dev "," require ": " laravel / framework ":" ~ 5.0 "," autoload ": " psr-4 ": "Alireza \\ Autenticación \\": "src /"
La clase Proveedor de servicios es simplemente el archivo que configura todo correctamente para el paquete. Aquí es cómo debe verse el Proveedor de servicios en este punto, en src / MyAuthServiceProvider.php
:
namespace Alireza \ Authentication; use Illuminate \ Support \ ServiceProvider; la clase MyAuthServiceProvider extiende a ServiceProvider / ** * Indica si la carga del proveedor es diferida. * * @var bool * / protected $ defer = false; / ** * Bootstrap los eventos de la aplicación. * * @return void * / public function boot () / ** * Registre el proveedor de servicios. * * @return void * / public function register () / ** * Obtenga los servicios proporcionados por el proveedor. * * @return array * / public function proporciona () return [];
Agregue el proveedor de servicios a config / app.php
:
'Alireza \ Authentication \ MyAuthServiceProvider :: class',
Ahora Laravel está al tanto del paquete. Puede preguntar sobre "alias" y por qué no lo agrego a mi app.php
. Personalmente, agrego alias en el método de registro de la clase de proveedor de servicios en lugar de agregarlo manualmente al archivo de configuración de Laravel. Me ocuparé de esto más tarde. Ahora crea una clase de PHP simple llamada MyAuth
en src / MyAuth.php
:
namespace Alireza \ Authentication; usar Config, Request, Session, Hash; usar App \ User; Class MyAuth public $ redirect_login = '/ users / home'; public $ redirect_logout = '/ users / logout'; public $ login = '/ user / login'; $ datos protegidos; función pública __construct () if (Request :: isMethod ('post')) // Obtener entradas de entrada $ this-> data = array ('username' => Input :: get ('username'), 'password' = > Entrada :: obtener ('contraseña')); inicio de sesión de función pública ($ datos = falso) $ esto-> datos = $ datos; if ($ this-> data &&! is_array ($ this-> data)) devuelve redirección ($ this-> login) -> con ('mensaje', 'lo siento, no hay ninguna matriz para iniciar sesión manualmente') -> send ( ); if ($ this-> data &&! Session :: has ('usuario')) $ result = User :: Where (['email' => $ this-> data ['username']]) -> first ( ); if ($ result && Hash :: check ($ this-> data ['password'], $ result-> password)) Session :: put ('usuario', $ result); return Redirect ($ this-> redirect_login) -> with ('message', 'Welcome log-in successed') -> send (); Session :: flush (); volver redirigir ($ this-> login) -> con ('mensaje', 'Error de inicio de sesión, nombre de usuario o contraseña incorrectos') -> enviar (); función pública logout () Session :: flush (); return redirect ($ this-> login) -> with ('message', 'logout successed') -> send ();
La clase de autenticación debe vincularse con el contenedor IoC de Laravel al proveedor de servicios del paquete. Antes de eso, cree una clase de Fachada que permita el uso de métodos de clase sin necesidad de crear una nueva instancia, así como otros beneficios que se indicaron anteriormente. Así como la clase MyAuth creó el nuevo directorio. Fachadas
en el directorio de Fachadas, crea una nueva clase de PHP y nómbrela src / MyAuthFacade.php
:
namespace Alireza \ Authentication; utilizar Illuminate \ Support \ Facades \ Facade; la clase MyAuthFacade extiende la función estática protegida getFacadeAccessor () return 'MyAuth';
Después de esto, lo único que queda es arrancar el paquete. El mío se parece a
registro de función pública () $ this-> app ['MyAuth'] = $ this-> app-> share (function ($ app) return new MyAuth;); $ this-> app-> booting (function () $ loader = \ Illuminate \ Foundation \ AliasLoader :: getInstance (); $ loader-> alias ('MyAuth', 'Alireza \ Authentication \ MyAuthFacade'););
Como puede ver, he enlazado la clase Myauth con el contenedor IoC. Ahora es fácil usar la clase MyAuth:
MyAuth :: login (['username' => '[email protected]', 'password' => 'test']);
Esto debería generar el mensaje., Bienvenido inicio de sesión exitoso.
Si lo desea, ahora puede registrar su paquete en Packagist. El paquete MyAuth ahora se ha registrado y se puede incluir fácilmente en Laravel a través del comando del compositor: compositor requiere "alireza / myauth"
.
Si está buscando un ejemplo de un paquete de Laravel popular y maduro, puede consultar TerranetAdmin para Laravel.
Este fue un breve resumen de cómo crear un paquete Laravel 5. Como puede ver, crear el paquete es fácil y podría ser una herramienta importante para simplificar y acelerar el proceso de desarrollo..