PHP Classes

Teo: MVC Framework with configurable routes and filters

Recommend this page to a friend!
  Info   View files Documentation   View files View files (31)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not yet rated by the usersTotal: 25 All time: 10,839 This week: 200Up
Version License PHP version Categories
teo 1.0.0Custom (specified...5PHP 5, Libraries, Design Patterns
Description 

Author

Alfredo Rodríguez


Contributor

This package provides an MVC Framework with configurable routes and filters.

It allows configuring how to route HTTP requests to controller classes by specifying arrays or strings that define how the request URLs will be processed to determine the controller actions to which the framework will forward the requests.

The framework also supports action filters that define functions that the framework will call before and after reaching a controller action function.

Picture of Alfredo Rodriguez
  Performance   Level  
Name: Alfredo Rodriguez <contact>
Classes: 2 packages by
Country: Costa Rica Costa Rica
Innovation award
Innovation award
Nominee: 1x

Details

<p align="center"><a href="https://jarscr.com" target="_blank"><img src="https://raw.githubusercontent.com/jarscr/teo/master/public/static/img/logos/logo-teo.png" width="192"></a></p>

<p align="center"> <a href="https://packagist.org/packages/jarscr/teo"><img src="https://img.shields.io/badge/PHP-^7.3-brightgreen.svg" alt="PHP Version"> <a href="https://packagist.org/packages/jarscr/teo"><img src="https://img.shields.io/packagist/dt/jarscr/teo" alt="Total Downloads"></a> <a href="https://packagist.org/packages/jarscr/teo"><img src="https://img.shields.io/packagist/v/jarscr/teo" alt="Latest Stable Version"></a> <a href="https://packagist.org/packages/jarscr/teo"><img src="https://api.travis-ci.com/jarscr/teo.svg" alt="Build Status"> <a href="https://packagist.org/packages/jarscr/teo"><img src="https://img.shields.io/packagist/l/jarscr/teo" alt="License"></a> </p>

Acerca de TEO Simple PHP Framework

TEO es un Framework en PHP para construir aplicaciones Web y Sitios Web. Es gratis y open-source.

Este proyecto esta basado en MVC <a href="https://github.com/daveh/php-mvc">daveh/php-mvc</a>

Iniciar usando el framework

  1. Primero, instale el proyecto con composer create-project jarscr/teo app-ejemplo.
  2. Ejecuta composer update para instalar las dependecias.
  3. Configure el servidor web para que apunte a la carpeta public como web root.
  4. Abra App/Config.php y ingrese los datos de conexión con la base de datos.
  5. Crea rutas, agrega controladores, vistas y modelos.

Revisa las instrucciones para que puedas usar este framework.

Configuración

Configuration settings are stored in the App/Config.php class. Default settings include database connection data and a setting to show or hide error detail. You can access the settings in your code like this: Config::DB_HOST. You can add your own configuration settings in here.

Rutas

Las Rutas traduce las URL en controladores y acciones. Las rutas se agregan en el controlador. Se incluye una ruta de inicio de muestra que se enruta a la acción index en el controlador de home.

Las rutas se agregan con el método add. Puede agregar rutas URL fijas y especificar el controlador y la acción, así:

$router->add('', ['controller' => 'Home', 'action' => 'index']);
$router->add('posts/index', ['controller' => 'Posts', 'action' => 'index']);

O puede agregar variables de ruta, así:

$router->add('{controller}/{action}');

Además de controller y action, puede especificar cualquier parámetro que desee entre llaves y también especificar una expresión regular personalizada para ese parámetro:

$router->add('{controller}/{id:\d+}/{action}');

También puede especificar un espacio de nombres para el controlador:

$router->add('admin/{controller}/{action}', ['namespace' => 'Admin']);

Controladores

Los controladores responden a las acciones del usuario (hacer clic en un enlace, enviar un formulario, etc.). Los controladores son clases que amplían la clase Core\Controller.

Los controladores se almacenan en la carpeta App/Controllers. Se incluye una muestra de Home controller. Las clases de controlador deben estar en el espacio de nombres App/Controllers. Puede agregar sub directorios para organizar sus controladores, por lo que al agregar una ruta para estos controladores, debe especificar el espacio de nombres (consulte la sección de enrutamiento anterior).

Las clases de controlador contienen métodos que son las acciones. Para crear una acción, agregue el sufijo Action al nombre del método. El controlador de muestra en App/Controllers/Home.php tiene una acción "index" de muestra.

Puede acceder a los parámetros de ruta (por ejemplo, el parámetro id que se muestra en los ejemplos de ruta anteriores) en acciones a través de la propiedad $ this->route_params.

Action filters

Los controladores pueden tener métodos de filtrado before y after. Estos son métodos que se llaman antes y después de cada llamada al método de acción en un controlador. Útil para la autenticación, por ejemplo, asegurarse de que un usuario haya iniciado sesión antes de permitirle ejecutar una acción. Opcionalmente, agregue un antes del filtro a un controlador como este:

/
 * Before filter. Return false to stop the action from executing.
 *
 * @return void
 */
protected function before()
{
}

Para detener la ejecución de la acción llamada originalmente, devuelve false del método de filtro anterior. Se agrega un filtro posterior así:

/
 * After filter.
 *
 * @return void
 */
protected function after()
{
}

Vistas

Las vistas se utilizan para mostrar información (normalmente HTML). Los archivos de visualización van en la carpeta App/Views. Las vistas pueden estar en uno de dos formatos: PHP estándar, pero con PHP suficiente para mostrar los datos. Ningún acceso a la base de datos ni nada parecido debería ocurrir en un archivo de vista. Puede representar una vista PHP estándar en un controlador, opcionalmente pasando variables, como esta:

View::render('Home/index.php', [
    'name'    => 'Dave',
    'colours' => ['red', 'green', 'blue']
]);

El segundo formato utiliza el motor de plantillas Twig. El uso de Twig le permite tener plantillas más simples y seguras que pueden aprovechar cosas como herencia de plantillas. Puede renderizar una plantilla Twig como esta:

View::renderTemplate('Home/index.html', [
    'name'    => 'Dave',
    'colours' => ['red', 'green', 'blue']
]);

Se incluye una plantilla de muestra de Twig en App/Views/Home/index.html que hereda de la plantilla base en App/Views/base.html.

Modelos

Los modelos se utilizan para obtener y almacenar datos en su aplicación. No saben nada sobre cómo se presentarán estos datos en las vistas. Los modelos extienden la clase Core\Model y usan PDO para acceder a la base de datos. Están almacenados en la carpeta App/Models. Se incluye una clase de modelo de usuario de muestra en App/Models/User.php. Puede obtener la instancia de conexión de la base de datos PDO de esta manera:

$db = static::getDB();

Errores

Si la configuración de SHOW_ERRORS se establece en true, el navegador mostrará todos los detalles del error si se produce un error o una excepción. Si se establece en false", se mostrará un mensaje genérico mediante App/Views/404.html o App/Views/500.html vistas, según el error.

En este proyecto usamos Sentry.io para monitorear los errores.

Configuración del servidor web

Las URL amigables se habilitan mediante reglas de reescritura del servidor web. Se incluye un archivo .htaccess en la carpeta public.

La configuración equivalente de nginx se encuentra en el archivo nginx-configuration.txt.

Licencia

Teo PHP MVC es un software open-sourced licenciado bajo MIT license.

Desarrolla

<p align="center"><a href="https://jarscr.com" target="_blank"><img src="https://raw.githubusercontent.com/jarscr/teo/master/public/static/img/logos/logo-jarscr.png" width="182"></a></p>

  Files folder image Files  
File Role Description
Files folder imageApp (1 file, 4 directories)
Files folder imageCore (5 files)
Files folder imagepublic (2 files, 1 directory)
Files folder imagetravisCI (2 files)
Accessible without login Plain text file .htaccess Data Auxiliary data
Accessible without login Plain text file .travis.yml Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file composer.lock Data Auxiliary data
Accessible without login Plain text file LICENSE Lic. License text
Accessible without login Plain text file nginx-configuration.txt Doc. Documentation
Accessible without login Plain text file README.md Doc. Documentation
Accessible without login Plain text file teo.sql Data Auxiliary data

  Files folder image Files  /  App  
File Role Description
Files folder imageControllers (1 file)
Files folder imageLanguages (2 files)
Files folder imageModels (1 file)
Files folder imageViews (4 files, 1 directory)
  Plain text file Config.php Class Class source

  Files folder image Files  /  App  /  Controllers  
File Role Description
  Plain text file Home.php Class Class source

  Files folder image Files  /  App  /  Languages  
File Role Description
  Accessible without login Plain text file en.php Aux. Auxiliary script
  Accessible without login Plain text file es.php Aux. Auxiliary script

  Files folder image Files  /  App  /  Models  
File Role Description
  Plain text file User.php Class Class source

  Files folder image Files  /  App  /  Views  
File Role Description
Files folder imageHome (1 file)
  Accessible without login HTML file 404.html Doc. Documentation
  Accessible without login HTML file 500.html Doc. Documentation
  Accessible without login HTML file base.html Doc. Documentation
  Accessible without login HTML file javascript.html Doc. Documentation

  Files folder image Files  /  App  /  Views  /  Home  
File Role Description
  Accessible without login HTML file index.html Doc. Documentation

  Files folder image Files  /  Core  
File Role Description
  Plain text file Controller.php Class Class source
  Plain text file Error.php Class Class source
  Plain text file Model.php Class Class source
  Plain text file Router.php Class Class source
  Plain text file View.php Class Class source

  Files folder image Files  /  public  
File Role Description
Files folder imagestatic (3 directories)
  Accessible without login Plain text file .htaccess Data Auxiliary data
  Accessible without login Plain text file index.php Example Example script

  Files folder image Files  /  public  /  static  
File Role Description
Files folder imagecss (1 file)
Files folder imageimg (1 directory)
Files folder imagejs (1 file)

  Files folder image Files  /  public  /  static  /  css  
File Role Description
  Accessible without login Plain text file styles.css Data Auxiliary data

  Files folder image Files  /  public  /  static  /  img  
File Role Description
Files folder imagelogos (2 files)

  Files folder image Files  /  public  /  static  /  img  /  logos  
File Role Description
  Accessible without login Image file logo-jarscr.png Icon Icon image
  Accessible without login Image file logo-teo.png Icon Icon image

  Files folder image Files  /  public  /  static  /  js  
File Role Description
  Accessible without login Plain text file jquery.min.js Data Auxiliary data

  Files folder image Files  /  travisCI  
File Role Description
  Accessible without login Plain text file defaultsite.tpl Data Auxiliary data
  Accessible without login Plain text file servername.tpl Data Auxiliary data

 Version Control Unique User Downloads Download Rankings  
 100%
Total:25
This week:0
All time:10,839
This week:200Up