Como construir un proyecto php profesional

25 octubre, 2024 0 Por admin
Como construir un proyecto php profesional

Introducción

Explicaremos el proceso de creación de una web en php de cero a experto.

Lo primero es tener ya la base de datos construida, en nuestro caso utilizaremos sqlite3.

Nuestro entorno

1.Descarga php desde aquí: https://windows.php.net/download/

Ponlo en la carpeta c:\php y crea la variable de entorno:

Copia y pega el archivo “php.ini-production” y renómbralo a php.ini

Ábrelo y descomenta la línea donde sale la extensión sqlite3 para poder utilizarla:

Abre un terminal y escribe “php –versión” para ver que funciona bien:

Sqlite viewer , para manejar las bases de datos sqlite:

Y FTP sync para cuando tengamos que utilizar el servidor en nuestro hosting:

1. Ponte en contacto con el rapiñador para obtener el archivo ftp-sync.json que tendrás que poner en la carpeta web/.vscode para que se sincronicen los datos con el servidor.

2. Si al guardar no se actualiza pincha en Crtl+Shift+p y escribe en la paleta de comandos Ftp-sync: upload file

Donde quieras crea una carpeta para tu proyecto footballdata y abrela con vscode:

Crea un nuevo archivo llamado “index.php” y dentro escribe:

Corriendo el servidor

Sitúate en el directorio raíz dentro del proyecto y escribe en la terminal o cmd:

php -S localhost:80

Ahora ve al navegador y escribe localhost:

Apagando el servidor

Presiona Control+c dentro del terminal o cmd:

 

1 etapa. Producto Mínimo Producto Viable

Creamos el producto mínimo viable, se vería así:

En el document-start.php tendrá todos los requires y los cdn de boostrap:

https://github.com/Murciadevs/footballdata/blob/main/web-v1/document-start.php

En el document-end, el enlace a nuestro main.js y el js de boostrap:

https://github.com/Murciadevs/footballdata/blob/main/web-v1/document-end.php

En el archivo: jugadores.php, estará la vista, la base de datos y la paginación:

https://github.com/Murciadevs/footballdata/blob/main/web-v1/jugadores.php

Si te dá este error:

Es que no has creado en archivo php.ini o no has descomenta la línea “extensión=sqlite3”

Cierra el servidor y enciendelo otra vez con “php -S localhost:80”

2 etapa: proyecto con carpetas bien estructuradas, Model View Crontroller, .htaccess, autoload e index.php

2.1 Creamos la estructura de carpetas

2.2 Creamos el .htacess

Todas las webs modernas redireccionan las urls o llamadas al servidor a un único archivo, llamado index.php, de esta forma podemos crear un sistema de llamadas a las vistas y bases de datos mas controlada, tenemos que decirle a nuestro servidor que todas las llamadas las mande al index.php y para eso es el archivo .htaccess, este archivo configura el servidor automáticamente.

Como trabajamos en un servidor sin apache tendremos que utilizar un script que redireccione todas las llamadas al index.php, a partir de ahora cuando arranquemos nuestro servidor escribiremos:

Otra opción es trabajar con XAMPP, que tiene un servidor apache, en este caso nuestro archivo .htaccess tendrá esta pinta:

Archivo .htaccess:

En el servidor, cuando lo subamos tendremos que utilizar este:

Archivo :htaccess:

https://github.com/Murciadevs/footballdata/blob/main/web-v2/.htaccess

2.2 creamos el autoload.php donde requerimos todos los archivos

Archivo autoload.php

https://github.com/Murciadevs/footballdata/blob/main/web-v2/autoload.php

2.4. creamos el index.php donde requerimos el autoload y enrutamos las peticiones a las vistas

Archivo index.php

https://github.com/Murciadevs/footballdata/blob/main/web-v2/index.php

2.5 El modelo

Lo primero es crear la clase que nos va a permitir conectarnos a la base de datos:

Archivo app\Libraries\SQLiteClient.php

https://github.com/Murciadevs/footballdata/blob/main/web-v2/app/Libraries/SQLiteCient.php

Ahora viene la clase que va a tener el objeto SQLiteClient y que contendrá todas las operaciones a la base de datos Create Read Update Delete, la llamamos JugadoresRepository y está la ubicación :

Archivo app\Repositories\JugadoresRepository.php

https://github.com/Murciadevs/footballdata/blob/main/web-v2/app/Repositories/JugadoresRepository.php

2.6 Vista

Archivo app\Repository\JugadoresRepository.php

https://github.com/Murciadevs/footballdata/blob/main/web-v2/app/views/jugadores.php

2.7 Controlador

Para terminar de rematar nuestra aplicación web en el index.php en lugar de cargar la vista directamentamete y que esta llame al repositorio vamos a crear una clase llamada BaseController que contedrá un objeto de la clase Vista y el objeto repositrio correspondiente , crearemos la clase de jugadoresController que heredará de BaseController

3 etapa: integrando composer. Creando la carpeta pública para mejorar la seguridad

3.1. Entendiendo composer autoload

Dentro del composer.json tenemos la propiedad «autoload» en ella se especifican las clases («con el atributo «psr-4» le decimos la carpeta donde están nuestras clases) y los archivos que se van a indexar (con el atributo «files»).

Creamos un archivo llamado «composer.json» y dentro le decimos a composer auto-lea nuestra carpeta app que es donde tenemos las clases de los Repositorios, Base de datos, Controladores, etc

Ahora escribimos «composer validate» para validar el composer.json

Al escribir ahora «composer dump-autoload -o» composer creará la carpeta «vendor» llena de archivos, a nostros nos interesan 3.

En el archivo vendor/composer/autoload_files.php composer está leyendo nuestro autoload:

3.2 Modificando el autoload de nuestro index.php

Ahora hacemos referencia a vendor/autoload.php en nuestro index.php

3.3 Poniendo namespaces

A partir de la versión 5.3 PHP nos obliga a trabajar con namespaces, por convención la primera letra empieza en mayúscula, donde los vayamos a usar ponemos «use nombre_de_namespace»

SQLitecient.php

namespace App\Libraries;

use SQLite3;

use Exception;

……

Escribimos «composer validate» y composer dump-autoload -o para refrescar el autoloading de Composer

4 Etapa: ORM eloquent, Blade, migraciones, laravel