**Versión estable más reciente: [versión 3.1.0, lanzada el 6 de julio de 2017].
La versión estable más reciente de la versión 2 se puede encontrar en la rama v2.
Únase a nosotros en Slack en qcubed.slack.com. Recibe tu invitación aquí .
QCubed (pronunciado 'Q' - cubo) es un marco de desarrollo rápido de aplicaciones PHP Model-View-Controller con soporte para PHP5 (5.4 y superior) y PHP7. El objetivo del marco es ahorrar tiempo de desarrollo en tareas mundanas y repetitivas, permitiéndole concentrarse en cosas que son útiles Y divertidas. QCubed sobresale en situaciones en las que tiene una estructura de base de datos grande que desea poner rápidamente a disposición de los usuarios.
Con QCubed, no tiene que lidiar con POST y GET provenientes del navegador. QCubed lo maneja automáticamente y empaqueta la información en formularios y controles orientados a objetos. Programar con QCubed se parece mucho a programar una aplicación de escritorio. Si está familiarizado con ASP, es similar.
El Generador de código crea automáticamente clases de objetos con formularios y controles coincidentes según el esquema de su base de datos. Utiliza el concepto de ORM, mapeo relacional de objetos, para crear prácticamente toda la capa del modelo.
Codegen puede aprovechar las relaciones de clave externa y las restricciones de campo para generar modelos de datos listos para usar, completos con rutinas de validación y potentes métodos CRUD, lo que le permite manipular objetos en lugar de emitir consultas SQL constantemente.
Más información y ejemplos están disponibles en línea en https://qcubed.eu/
El uso de QQueries permite una carga de modelos simple pero poderosa, todas las clases ORM generadas tienen métodos de consulta y QQNodes. Al utilizar estos métodos, obtener un subconjunto complejo de datos es bastante sencillo y se puede utilizar en casi cualquier base de datos relacional.
QCubed utiliza el concepto de QForm para mantener el estado del formulario entre transacciones POST. Un QForm sirve como controlador y puede contener QControls que son componentes de la interfaz de usuario.
Todos los QControls (incluido el propio QForm) pueden usar una plantilla que es la capa de vista, completando la estructura MVC.
QControls puede aprovechar FormState de QForm para actualizarse a través de devoluciones de llamada Ajax tan fácilmente como los POST de servidor sincrónicos. Todos los widgets principales de jQuery UI están disponibles como QControls.
Algunos QControls incluyen:
La forma más sencilla de aprender QCubed es ver el tutorial de ejemplos en http://qcu.be/examples/
A través de su sistema de complementos, QCubed facilita el empaquetado y la entrega de mejoras y adiciones al código base principal. Los complementos para la versión actualmente activa de QCubed se encuentran en repositorios que comienzan con complemento .
El procedimiento de instalación se describe detalladamente aquí: Instrucciones de instalación.
3.0 fue un cambio arquitectónico importante con respecto a 2.x. Básicamente, debería comenzar de nuevo creando un nuevo proyecto, generando sus modelos, usando ModelConnectorEditor para refinar lo que se genera en los conectores (antes se llamaba MetaControls) y luego copiando el código de su versión anterior a la nueva versión. Descubrirá que muchas de las cosas que tenía que hacer a mano ahora se hacen en código generado, por lo que es posible que no le lleve tanto tiempo como cree. saltemos :-)
v3.1 Ahora tiene seguimiento de cambios en los modelos. En lugar de enviar un objeto completo a la base de datos cada vez que guarda un objeto, solo envía los datos que han cambiado. Para hacer esto, hace que las variables miembro en la superclase del modelo generada sean privadas en lugar de protegidas, lo que puede requerir que cambie el código en su subclase de modelo. Para ayudar con la transición, la nueva función de variable privada está desactivada de forma predeterminada. Deberá activarlo editando el archivo codegen_settings.xml y agregando un parámetro 'privateColumnVars="true"' a la etiqueta createOptions. Consulte el archivo codegen_settings.xml en el directorio qcubed/install/project/configuration para ver un ejemplo.
Esto hará que todas las variables de columna protegidas que están en la clase Gen sean privadas, por lo que no podrá acceder a ellas directamente desde sus subclases de Modelo. Por ejemplo, si tiene una columna "Nombre" en una tabla, puede hacer:
$ strName = $ this -> Name ;
o mejor aún:
$ strName = $ this -> getName ();
pero no:
$ strName = $ this -> strName ;
$this->Name
rutas a $this->getName()
Además, en lugar de esto:
$ this -> strName = $ strName ;
hacer:
$ this -> setName ( $ strName );
o
$ this -> Name = $ strName ;
Los beneficios de la nueva característica incluyen un mejor rendimiento, excepciones reducidas de OptimisticLocking y evitar que acceda accidentalmente a un valor que no se cargó debido a una cláusula QSelect. Además, QSelect ahora se puede utilizar para controlar lo que se genera cuando convierte un objeto a otros formatos como JSON.
v4.0 es otro cambio arquitectónico importante, diseñado para admitir los estándares PSR-1, PSR-2 y PSR-4. v4 agrega espacios de nombres a todos los archivos principales y de biblioteca. Atrás quedó la letra 'Q' delante de todas las clases principales, ya que esa era esencialmente nuestra forma de hacer espacios de nombres antes de que los espacios de nombres estuvieran disponibles en PHP.
Incluye herramientas para ayudar a automatizar el cambio de código de v3.x a v4.0. Consulte el archivo Léame en el repositorio qcubed/application para obtener más información.
Una lista de los últimos cambios está disponible en https://github.com/qcubed/qcubed/commits/master
QCubed se deriva de QCodo, un proyecto de Michael Ho. QCubed se basa en JQuery y utiliza bibliotecas jQuery UI para algunos de sus controles principales.