Create an account or log in

Keep learning for free! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

1 Días
4 Hrs
25 Min
54 Seg

Front Controller

4/14
Resources

What is Front Controller?

The Front Controller concept is a design pattern that solves the problem of single sign-on to a web system. Historically, each page of a website, such as index.php, contacts.php, or services.php, functioned as individual logins. This pattern allows all requests to pass through a single entry point, known as the index.php file. This is essential for modern frameworks that use centralized routing and request systems, thus optimizing code organization and maintenance.

How does the Front Controller work in practice?

In the Front Controller implementation, the index.php file is configured to be the only entry point to the web system. This is achieved by requiring the class autoload system, commonly configured through Composer with autoload.php. Absolute paths are used here thanks to the use of __DIR__, which allows paths to be specified from the root of the directory, eliminating the hassle of relative paths.

require __DIR__ . '/../vendor/autoload.php';

Why is this centralization important? Because it allows a more effective management of common site components, such as headers, footers or navigation menus, avoiding the excessive use of includes scattered in multiple files.

What happens when a user accesses the system?

When accessing, an HTTP request is created and handled by a specific class (yet to be defined). This class executes a send method that processes the request and generates an appropriate response. The request is made to the Request class, which is registered and loaded by Composer:

$request = new HttpRequest();$request->send();

The purpose of this configuration is to ensure that when a request is received, the system processes it correctly through the front controller and provides an accurate response to the user.

Recommendations to implement the Front Controller pattern

  1. Use Absolute Paths: Ensures that paths to files are correct and do not depend on the local directory structure.
  2. Centralize Common Solutions: Group shared elements such as header and footer for easy maintenance.
  3. Simplify Class Autoloading: Use tools like Composer to handle dependencies and automatic class loading.
  4. Evaluate your Project Structure: Adapt the structure to take full advantage of the Front Controller, ensuring that all paths and requests go through the index.

Don't forget to perform the practical exercise and share your results! This process will not only improve the organization of your code, but also refine your understanding of how modern frameworks operate. Continue to explore and apply these concepts to strengthen your web development skills.

Contributions 36

Questions 6

Sort by:

Want to see more contributions, questions and answers from the community?

Cuando recién comenzaba con PHP y no había nadie que me guiara, recuerdo que aprendí a hacer mi propio sistema de peticiones y respuestas, y todo pasaba siempre por el index.php y me sentía genial por haber descubierto una nueva forma de programar… hasta el día de hoy me vengo a dar cuenta que eso que hice se llama “Front Controller” xD

Front Controller


Es un patrón que nos ayuda a solucionar el problema de acceso único en la web. Este se utiliza para proporcionar un mecanismo centralizado para manejar solicitudes, todas las solicitudes son procesadas por un solo controlador. El controlador puede realizar la autenticación / autorización / registro o solicitud de seguimiento, entonces la petición al controlador adecuado.

En este caso, vamos a lograr que todos pase a través de index.php, así centralizaremos los accesos. Además, ya no necesitaremos tener un sistema lleno de include para incluir cabeceras o footers.

📁 Cuando nos referimos a rutas absolutas quiere decir que la ruta comienza en la raíz del directorio.

Esto es todo lo que contendrá el archivo index. Este va a cargar todo lo necesario, luego va a disponer de la clase Request porque lo registramos en composer, este va a ejecutar el método enviar.

<?php

require __DIR__ . '/../vendor/autoload.php';

// var_dump(__DIR__ . '/../vendor/autoload.php');

$request = new App\Http\Request;
$request->send();

Resumen: Básicamente es centralizar todas las peticiones.

front controller seria como la boca de la botella

__DIR__  es una ruta absoluta, lo que quiere decir que cominenza en la raíz y la construye completamente. ```

Después de haber trabajado con Laravel y haber hecho varios proyectos en el, apenas vengo a saber que así se llamaba el patrón: Front Controller.
Muchas gracias.

Se puede usar el servidor integrado de php desde la consola con el siguient comnado

php -S localhost:8000 -t public/

Sí estas usando laragon y no sabes porque entra a platzi.test y no a localhost/platzi es por la configuración de laragon, laragon automaticamente configura virtualhosts con el nombre de las carpetas que hay dentro de www . test (de hecho esto lo peudes cambiar).

Ahora para que el punto de entrada de tu app sea la carpeta public dentro de www/platzi, debes ir a la configuración de laragon, dando sengudo clic a donde dice web, luego apache, luego site-enable, luego buscas el que tieen nombre de tu carpeta te abrirar un archivo de cconfiguración, debes cambiar el parametro rootDirectory agregando al final /public/, luego guardas y reinicias el servidor, si estas usando XAMP y LAMP, deja de hacerlo, descarga laragon JAJAJA, mentira, cada quien, pero también se debe de poder mas o menos igual, solo busca la documentación.

Profe. Como levantó el servidor. He usado php 4 años, pero no he tenido que usar composer. Composer levanta el servidor?

Frontcontroller, centralizar todas las peticiones. Se ejecutan las clases propias de la peticon.

Ojo , pongan cuando estan configurando el auto carga tiene que ser así

“App\”; “app/”

Si descargas el código del curso te darás cuenta que está escrito “autolad” en vez de “autoload” lo que genera un error.

Perfect!

Para los que usan laragon y quieren entrar a la carpeta “public” sin escribirla en la url deben hacer lo siguiente:

  1. Abrir el archivo de conf del sitio que crearon para el proyecto

  2. Agregar “public/” al final de la variable ROOT

Front controller:

El primer paso es configurar el index para que todo pase a través de el.

Front Controller: Es un patrón que ayuda a solucionar el problema de acceso único a un sistema web.

Hola! He instalado Valet y tengo exactamente la misma estructura de directorios que en el ejemplo. He añadido la carpeta platzi con `valet park:` `➜ platzi valet park` `This directory has been added to Valet's paths.` pero siempre tengo 404 en la URL `platzi.test `aunque ponga un `var_dump()` en el archivo index.php (como en el ejemplo del video). ¿Me pueden indicar cómo configurarlo para ver la apñicación? Muchas gracias.

Fine.

index.php
<?php

require DIR . ‘/…/vendor/autoload.php’;

var_dump(DIR . ‘/…/vendor/autoload.php’);

$request = new App\Http\Request;
$request->send();

Salida del var_dump:
string(64) “C:\Apps\xampp\htdocs\frameworksphp\public/…/vendor/autoload.php”

A mi me gusta usar scripts personalizados para crear todas estas estructuras en apps desde cero, es mas rapido y no te complicas tanto pensando en como era la estructura

me hizo recordar los famosos include y require que lo usaba en todo , con este patrón veo que la cosa ya es mas seria.

Fron controller lo usa laravel , bien

hola

Excelente

Hola Buenos dias. Que gusto saludarlos, en las ruta relativas y las rutas absolutas, entiendo que es mucho mejor crear rutas absolutas porque inician desde la raíz. Entonces es mejor siempre usarlo así? y cuando pasamos desde nuestro entorno de desarrollo a producción a las rutas se les tendrá que hacer algún cambio?

Todo lo que pasa en el index, es el FrontController

Error: Apache no encuentra el index y te manda un Forbidden.

Si al entrar a tu servidor, te aparece Forbidden o que no se puede encontrar el archivo index.php porque ahora lo tienes en el directorio public, creas un .htaccess en la raíz del http o www, según la configuración de tu apache2 (si usas este) y en el archivo escribes:

DirectoryIndex public/index.php

Ya con eso podrás ingresar al index sin problema. Saludos.

Es un patrón que nos ayuda a solucionar el problema de acceso único a un sistema web. Con este patrón todas las peticiones pasan a través de index para centralizar el acceso a la web.

Front Controller
Basicamente el Font Controller es una forma de centralizar la entrada de datos al sistema (requests y responses), en este caso se hace por medio del archivo index.php

<?php
require __DIR__.'/../vendor/autoload.php';

$request = new App\Http\Request;
$request->send();

Interesante clase…

Front controller realizado

Para ingresar debo escribir (servidor remoto):
https://xxx.xxx.xxx.xxx/platzi/public/
¿En que curso puedo aprender a direccionar como lo hace Italo? para entrar directamente a https://xxx.xxx.xxx.xxx/

<?php

require __DIR__.'/../vendor/autoload.php';

$request = new App\Http\Request();
$request->send();

front controller seria como la boca de la botella