MINI es una aplicación PHP esqueleto extremadamente simple y fácil de entender, reducida al máximo. MINI NO es un framework profesional y no viene con todo lo que tienen los frameworks reales. Si sólo desea mostrar algunas páginas, hacer algunas llamadas a bases de datos y un poco de AJAX aquí y allá, sin leer documentación masiva de marcos profesionales altamente complejos, entonces MINI podría ser muy útil para usted. MINI es fácil de instalar, funciona en casi todas partes y no complica las cosas más de lo necesario.
Para una introducción más profunda a MINI, eche un vistazo a esta publicación de blog: MINI, una aplicación PHP básica extremadamente simple.
MINI tiene un hermano menor, llamado TINY. Es similar a MINI, pero se ejecuta sin mod_rewrite en casi todos los entornos. No es adecuado para sitios en vivo, pero es bueno para la creación rápida de prototipos.
MINI también tiene un hermano mayor, llamado MINI2. Es aún más simple, se creó con Slim y tiene características interesantes como compilación SASS, Twig, etc.
MINI3 es el sucesor de MINI, utilizando la estructura de aplicación nativa MINI1 original (sin Slim bajo el capó), pero con carga automática PSR-4 adecuada, múltiples clases de modelos y espacios de nombres reales.
Si está utilizando Vagrant para su desarrollo, puede instalar MINI con un clic (o un comando en la línea de comando) [Vagrant doc]. MINI viene con un archivo Vagrant de demostración (define su cuadro Vagrant) y un bootstrap.sh de demostración que instala automáticamente Apache, PHP, MySQL, PHPMyAdmin, git y Composer, establece una contraseña elegida en MySQL y PHPMyadmin e incluso dentro del código de la aplicación. descarga las dependencias de Composer, activa mod_rewrite y edita la configuración de Apache, descarga el código de GitHub y ejecuta las declaraciones SQL de demostración (para datos de demostración). Esto es 100% automático, terminarás después de +/- 5 minutos con una instalación completamente ejecutada de MINI2 dentro de una caja Ubuntu 14.04 LTS Vagrant.
Para hacerlo, coloque Vagrantfile
y bootstrap.sh
de _vagrant
dentro de una carpeta (y nada más). Haga vagrant box add ubuntu/focal64
para agregar Ubuntu 20.04 LTS de 64 bits a Vagrant (a menos que ya lo tenga), luego haga vagrant up
para ejecutar el cuadro. Cuando finalice la instalación, podrá utilizar directamente la aplicación de demostración completamente instalada en 192.168.33.44
(puede cambiar esto en Vagrantfile). Como este es solo un entorno de demostración rápida, la contraseña raíz de MySQL y la contraseña raíz de PHPMyAdmin están configuradas en 12345678
, el proyecto se instala en /var/www/html/myproject
. Puedes cambiar esto con seguridad dentro de bootstrap.sh
. Cierra la caja con vagrant halt
Puede instalar MINI, incluidos Apache, MySQL, PHP y PHPMyAdmin, mod_rewrite, Composer, todas las configuraciones necesarias e incluso las contraseñas dentro del archivo de configuración simplemente descargando un archivo y ejecutándolo, toda la instalación se ejecutará de forma 100% automática. Encuentre el tutorial en este artículo de blog: Instale MINI en 30 segundos dentro de Ubuntu 14.04 LTS
application/config/config.php
_install/
(con PHPMyAdmin, por ejemplo).MINI funciona sin ninguna configuración adicional. También puedes ponerlo dentro de una subcarpeta, funcionará sin ninguna configuración adicional. Quizás sea útil: un tutorial sencillo sobre cómo instalar LAMPP (Linux, Apache, MySQL, PHP, PHPMyAdmin) en Ubuntu 14.04 LTS y lo mismo para Ubuntu 12.04 LTS.
server {
server_name default_server _; # Listen to any servername
listen [::]:80;
listen 80 ;
root /var/www/html/myproject/public;
location / {
index index.php;
try_files / $uri / $uri / /index.php?url= $uri ;
}
location ~ .(php)$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ;
include fastcgi_params;
}
}
Puede encontrar una discusión más profunda sobre las configuraciones de nginx aquí.
El script utiliza mod_rewrite y bloquea todo acceso a todo lo que esté fuera de la carpeta /public. No se puede acceder a su carpeta/archivos .git, archivos temporales del sistema operativo, la carpeta de la aplicación y todo lo demás (cuando está configurado correctamente). Para las solicitudes de bases de datos se utiliza PDO, por lo que no es necesario pensar en la inyección SQL (a menos que esté utilizando versiones de MySQL extremadamente obsoletas).
MINI viene con una pequeña herramienta de depuración de PDO personalizada (encuentre el código en application/libs/helper.php), que intenta emular sus declaraciones PDO-SQL. Es extremadamente fácil de usar:
$ sql = " SELECT id, artist, track, link FROM song WHERE id = :song_id LIMIT 1 " ;
$ query = $ this -> db -> prepare ( $ sql );
$ parameters = array ( ' :song_id ' => $ song_id );
echo Helper:: debugPDO ( $ sql , $ parameters );
$ query -> execute ( $ parameters );
El proyecto fue escrito en PHP5, pero con el lanzamiento de PHP7 ya no es posible nombrar una clase "Error" ya que PHP ahora tiene una clase de Error interna. Cambiar el nombre fue la solución más simple, en comparación con otras opciones como "ErrorController", etc., que agregarían nuevos problemas como nombres de archivos en mayúsculas, etc. (que no funcionarán correctamente en algunas configuraciones).
Este proyecto está bajo la licencia MIT. Esto significa que puede usarlo y modificarlo de forma gratuita en proyectos privados o comerciales.
Y por cierto, también estoy escribiendo un blog en Dev Metal.
La ruta URL de la aplicación se traduce directamente a los controladores (= archivos) y sus métodos dentro de la aplicación/controladores.
example.com/home/exampleOne
hará lo que dice el método exampleOne() en application/controllers/home.php.
example.com/home
hará lo que dice el método index() en application/controllers/home.php.
example.com
hará lo que dice el método index() en application/controllers/home.php (respaldo predeterminado).
example.com/songs
hará lo que dice el método index() en application/controllers/songs.php.
example.com/songs/editsong/17
hará lo que dice el método editsong() en application/controllers/songs.php y le pasará 17
como parámetro.
Se explica por sí mismo, ¿verdad?
Veamos el método exampleOne() en el controlador de inicio (aplicación/controladores/home.php): Esto simplemente muestra el encabezado, el pie de página y la página example_one.php (en vistas/inicio/). Por intención lo más simple y nativa posible.
public function exampleOne ()
{
// load view
require APP . ' views/_templates/header.php ' ;
require APP . ' views/home/example_one.php ' ;
require APP . ' views/_templates/footer.php ' ;
}
Veamos el método index() en el controlador de canciones (aplicación/controladores/songs.php): similar al ejemplo uno, pero aquí también solicitamos datos. Nuevamente, todo es extremadamente reducido y simple: $this->model->getAllSongs() simplemente llama al método getAllSongs() en application/model/model.php.
public function index ()
{
// getting all songs and amount of songs
$ songs = $ this -> model -> getAllSongs ();
$ amount_of_songs = $ this -> model -> getAmountOfSongs ();
// load view. within the view files we can echo out $songs and $amount_of_songs easily
require APP . ' views/_templates/header.php ' ;
require APP . ' views/songs/index.php ' ;
require APP . ' views/_templates/footer.php ' ;
}
Para mayor simplicidad, todos los métodos de manejo de datos se encuentran en application/model/model.php. Seguramente esto no es realmente profesional, pero es la implementación más simple. Eche un vistazo a cómo se ve getAllSongs() en model.php: PDO puro y súper simple.
public function getAllSongs ()
{
$ sql = " SELECT id, artist, track, link FROM song " ;
$ query = $ this -> db -> prepare ( $ sql );
$ query -> execute ();
return $ query -> fetchAll ();
}
El resultado, aquí $songs, se puede usar fácilmente directamente dentro de los archivos de vista (en este caso application/views/songs/index.php, en un ejemplo simplificado):
<tbody>
<?php foreach ( $ songs as $ song ) { ?>
<tr>
<td> <?php if ( isset ( $ song -> artist )) echo htmlspecialchars ( $ song -> artist , ENT_QUOTES , ' UTF-8 ' ); ?> </td>
<td> <?php if ( isset ( $ song -> track )) echo htmlspecialchars ( $ song -> track , ENT_QUOTES , ' UTF-8 ' ); ?> </td>
</tr>
<?php } ?>
</tbody>
MINI es el sucesor de php-mvc. Como php-mvc no proporcionó una estructura MVC real (y varias personas se quejaron de eso, ¡lo cual es totalmente correcto!), cambié el nombre y reconstruí el proyecto.
... MINI es simplemente una sencilla herramienta auxiliar que he creado para mi trabajo diario, simplemente porque era mucho más fácil de configurar y manejar que los frameworks reales. Para el trabajo diario de agencia, creación rápida de prototipos y proyectos impulsados por el frontend, está totalmente bien, hace el trabajo y no hay absolutamente ninguna razón para discutir por qué es "una mierda en comparación con Laravel", por qué no sigue varios principios de MVC o por qué no hay soporte personal no remunerado. o ninguna traducción al ruso o cosas raras similares. El troleo contra los proyectos de código abierto (y sus autores) realmente ha alcanzado dimensiones demenciales.
Escribí esto de forma voluntaria y no remunerada en mi tiempo libre y lo subí a GitHub para compartirlo. Es totalmente gratuito, para uso privado y comercial. Si no te gusta, no lo uses. Si ve problemas, escriba un ticket (y si es realmente genial: ¡estoy muy agradecido por cualquier confirmación!). Pero no golpees, no te quejes, no odies. Sólo la gente mala lo hace.
Comprométase con la rama de desarrollo (que contiene la versión en desarrollo), no con la rama maestra (que contiene la versión probada y estable).
diciembre de 2002
agosto 2016
febrero 2015
diciembre 2014
noviembre 2014
octubre 2014
septiembre 2014
agosto 2014
junio 2014
abril 2014
enero 2014
Apoye el proyecto alquilando un servidor en DigitalOcean o simplemente dando una propina a un café en BuyMeACoffee.com. ¡Gracias! :)