
Bee Framework
Mini framework desarrollado por la Academia de Joystick.
Puedes hacer uso de el para tus proyectos personales o comerciales, es ligero y fácil de implementar para proyectos tanto pequeños como aquellos que requieren escalabilidad y visión a futuro.
Changelog
v 1.5.8
- Revisa el curso oficial sobre esta versión de Bee framework 1.5.8 dando clic aquí.
- Nueva clase BeeRoleManager para gestión de roles y permisos, un sistema muy flexible y escalable para gestionar el acceso de usuarios con diferentes roles y permisos asignados por role. Es necesario actualizar la base de datos con un nuevo esquema que incluye 3 tablas nuevas: bee_roles, bee_permisos y bee_roles_permisos, requiere usar el archivo db_beeframework.sql.
/**
* El uso es muy sencillo, todo se basa en el slug del role y los permisos asignados al role.
* Con el handler puedes hacer todas las tareas necesarias:
* Desde agregar roles, actualizar, borrar, asignar permisos, crear permisos, borrar permisos.
*/
// Validar un permiso
$userRole = 'vendedor';
$role = new BeeRoleManager($userRole);
if ($role->can('agregar-ventas')) {
echo '¡Bienvenido, puedes agregar ventas!';
} else {
echo 'No puedes agregar más ventas.';
}
// Crear un role nuevo
$role = new BeeRoleManager();
$role->addRole('Diseñador Gráfico', 'dg');
// Editar un role
$role->updateRole(3, 'Diseñador Gráfico Editado', 'dge');
// Borrar un role
$role->removeRole('dge');
// Crear permisos
$permiso = new BeeRoleManager();
$permiso->addPermission('Crear imágenes', 'crear-imagenes', 'Puede crear imágenes y descargarlas.');
// Asignar permisos a un role
$role = new BeeRoleManager('dg');
$role->allow('crear-imagenes');
// O quitar permisos a un role
$role = new BeeRoleManager('dg');
$role->deny('crear-imagenes');
- El controlador principal Controller.php se ha mejorado y hemos ampliado la forma en que se usa, ahora es posible usarlo para configurar cada nuevo controlador de diferentes maneras, puede ser un endpoint para talvez una API, ajax o regular como un controlador común, ahora tenemos a nuestra disposición nuevos métodos para trabajar de forma orientada a objetos la implementación, el renderizado de la vista, asignación de $data pasada a la vista y mucho más, haciendo todo más mantenible y escalable.
class productosController extends Controller implements ControllerInterface {
function __construct()
{
parent::__construct('endpoint'); // Define que es un endpoint
}
}
- Nueva clase BeeHooksManager para crear y administrar ganchos o hooks a lo largo del flujo de ejecución del framework, aumentando las posibilidades y configuraciones de manera exponencial sin la necesidad de modificar archivos de configuración o del core.
// classes/Bee.php
class Bee {
// ..............
private function init()
{
// Todos los métodos que queremos ejecutar consecutivamente
$this->init_session();
$this->init_load_config();
$this->init_framework_properties();
$this->init_load_composer(); // Carga las dependencias de composer
$this->init_autoload(); // Inicializa el cargador de nuestras clases
$this->init_load_functions();
BeeHookManager::runHook('init_set_up', $this);
BeeHookManager::runHook('after_functions_loaded'); // Gancho o Hook definido
}
// ..............
}
// bee_custom_functions.php
/**
* Carga el archivo de funciones para las clases en vivo, tutoriales y streams de Joystick
* Puedes borrar todo esto sin problema alguno o usarlo cómo referencia para tus proyectos
*
* @return void
*/
function load_joystick_functions()
{
require_once FUNCTIONS . 'puedes_borrarlas.php';
}
/**
* Se ejecuta el hook después de la carga de todas las funciones del core
*/
BeeHookManager::registerHook('after_functions_loaded', 'load_joystick_functions');
- Se han hecho mejoras al archivo de settings.php y al flujo de carga y ejecución del framework, ahora con el sistema de hooks es posible crear nuevas constantes y configuraciones sin necesidad de tocar los archivos settings.php y bee_config.php.
- Nuevas mejoras en la interfaz y en la pantalla de bienvenida del framework, con base a su feedback se re-acomodaron los elementos de navegación.
- Nueva clase BeeCartHandler y sub-clases que permiten la creación de carritos de compra persistentes para la sesión del usuario, totalmente funcional y dinámico, puede ser usado desde el inicio para procesos de tiendas en línea, junto con esto viene un nuevo controlador llamado tiendaController dónde se listan todos los productos de la base de datos (nueva tabla products) en el esquema inicial, y nuevo controlador carritoController para mostrar el carrito y proceso de Checkout de forma profesional, puede ser editado y alterado a necesidad.
- Nueva clase BeeFormBuilder para construir de forma dinámica formularios, cómo se lista en la versión anterior.
- Ahora es posible generar controladores con Creator y seleccionar si la vista a crear será utilizando el motor nativo de Bee o si se deberá utilizar Twig, el nuevo motor implementado en Bee framework.
- Nuevo panel de administración implementado y listo para ser utilizado en un controlador seguro llamado adminController, ahora el perfil de usuario será mostrado ahí, y puede ser utilizado para gestionar o administrar el sistema que se esté construyendo, se ha utilizado la plantilla SB Admin 2 con Bootstrap, puedes hacer uso de ese mismo o actualizar al de tu preferencia.
v 1.5.5
- Se ha anexado una nueva clase para construir de forma dinámica, rápida y mantenible formularios, la clase la encuentras como BeeFormHandler, puede ser utilizada desde este momento para cualquier proyecto, estamos trabajando en extender sus funcionalidades para hacerlo aún más flexible. Actualmente soporta los tipos de campos más utilizados como text, email, password, select, checkbox, radio, range, number, phone, url, date y file. De igualmente manera incluye una funcionalidad interesante para generar un script para enviar la información de los campos del formulario usando AJAX de forma automática.
- La API es 100% funcional y segura de ser utilizada en proyectos en producción, todo está funcionando de forma estable y segura, puedes extender la funcionalidad a todos los controladores, pero deberás añadirlos a la lista de controladores que serán interpretados como endpoints generales de la API.
- Ahora la función logger() registra la información en dos archivos diferentes, bee_log.log para producción y dev_log.log para desarrollo, así no hay mezcla de información en el registro de los eventos.
- Se ha implementado un sistema para configuraciones basadas en registros dentro de la base de datos utilizando el modelo optionModel, podrás guardar valores de configuración y cargarlos para añadir seguridad o personalización a cualquier sistema de inmediato, utiliza el método optionModel::search(opción) o la función get_option(nombre de la opción) para buscar la opción en la base de datos y obtener su valor, para crear una nueva opción o actualizarla usa optionModel::save(opción, valor), si no existe será creada, si existe será actualizada.
- Open Graph añadido para mejorar el SEO de forma rápida y sencilla de cualquier artículo o sección del sistema.
- Estamos implementado Twig como motor de plantillas para simplificar la lógica de presentación y mejorar la reutilización de código en nuestras vistas. Esto permitirá una separación más clara entre la lógica de negocio y la presentación, lo que a su vez mejorará la mantenibilidad de nuestro código. Twig ofrece una sintaxis clara y fácil de entender, lo que agilizará el proceso de desarrollo y reducirá la posibilidad de errores en nuestras plantillas. Gracias a su sistema de almacenamiento en caché, Twig mejorará el rendimiento general de nuestras vistas, asegurando una experiencia más fluida para nuestros usuarios, es importante entender que aún está en desarrollo la implementación de la forma más flexible posible.
- Se están creando dos nuevas tablas en la base de datos: posts y posts_meta. Estas tablas están diseñadas para almacenar información genérica de cualquier tipo, lo que las hace muy versátiles y adecuadas para diversos proyectos. En la tabla , se pueden almacenar diferentes tipos de registros, como visitas, comentarios, vistas, entradas de blog, noticias, productos, servicios, mensajes y cualquier otro tipo de dato relevante. La idea detrás de esta tabla es que sea lo suficientemente flexible para adaptarse a cualquier requerimiento sin necesidad de crear tablas específicas para cada tipo de dato. Por otro lado, se tiene la tabla , que se utilizará para almacenar metadatos relacionados con los registros guardados en la tabla . Los metadatos son datos adicionales que proporcionan información sobre los registros, como etiquetas, categorías, fechas, autor, o cualquier otro atributo relevante que pueda variar según el tipo de contenido almacenado.
v 1.5.0
- Se ha sustituido el controlador por defecto de homeController a beeController esto para facilitar el actualizado del core a nuevas versiones una vez en producción, facilitando el trabajo de los desarrolladores que lo utilizan.
- Se ha implementado el uso de Vue.js 3 con base a CDN y no CLI, puede ser removido retirando la etiqueda en el archivo styles.php.
- Nueva clase BeePdf implementada para la generación de forma sencilla de documentos formato pdf con pocas línea de código, como base se utiliza la librería dompdf una de