**Dernière version stable : [version 3.1.0, publiée le 6 juillet 2017].
La version stable la plus récente de la version 2 se trouve dans la branche v2.
Rejoignez-nous sur Slack sur qcubed.slack.com. Obtenez votre invitation ici .
QCubed (prononcé « Q » - cubed) est un framework de développement d'applications rapide PHP Model-View-Controller prenant en charge PHP5 (5.4 et supérieur) et PHP7. L'objectif du framework est de gagner du temps de développement autour de tâches banales et répétitives, vous permettant ainsi de vous concentrer sur des choses utiles ET amusantes. QCubed excelle dans les situations où vous disposez d'une grande structure de base de données que vous souhaitez mettre rapidement à la disposition des utilisateurs.
Avec QCubed, vous n'avez pas à gérer les POST et GET provenant du navigateur. QCubed gère automatiquement cela pour vous et regroupe les informations dans des formulaires et des contrôles orientés objet. Programmer avec QCubed ressemble beaucoup à programmer une application de bureau. Si vous connaissez ASP, c'est similaire.
Le générateur de code crée automatiquement des classes d'objets avec des formulaires et des contrôles correspondants en fonction du schéma de votre base de données. Il utilise le concept d'ORM, mappage objet-relationnel, pour créer pratiquement l'intégralité de votre couche de modèle pour vous.
Codegen peut tirer parti des relations de clés étrangères et des contraintes de champ pour générer des modèles de données prêts à l'emploi complets avec des routines de validation et de puissantes méthodes CRUD, vous permettant de manipuler des objets au lieu d'émettre constamment des requêtes SQL.
Plus d'informations ainsi que des exemples sont disponibles en ligne sur https://qcubed.eu/
L'utilisation de QQueries permet un chargement de modèles simple mais puissant, toutes les classes ORM générées ont des méthodes Query et des QQNodes. En utilisant ces méthodes, obtenir un sous-ensemble complexe de données est assez simple et peut être utilisé sur presque toutes les bases de données relationnelles.
QCubed utilise le concept de QForm pour conserver l'état du formulaire entre les transactions POST. Un QForm sert de contrôleur et peut contenir des QControls qui sont des composants d'interface utilisateur.
Tous les QControls (y compris QForm lui-même) peuvent utiliser un modèle qui est la couche de vue, complétant ainsi la structure MVC.
Les QControls peuvent profiter du FormState de QForm pour se mettre à jour via les rappels Ajax aussi facilement que les POST de serveur synchrone. Tous les widgets principaux de jQuery UI sont disponibles en tant que QControls.
Certains QControls incluent :
Le moyen le plus simple d'apprendre QCubed est de consulter le didacticiel d'exemples sur http://qcu.be/examples/
Grâce à son système de plugins, QCubed facilite l'empaquetage et la fourniture d'améliorations et d'ajouts à la base de code principale. Les plugins pour la version actuellement active de QCubed se trouvent dans des référentiels commençant par plugin .
La procédure d'installation est décrite en détail ici : Instructions d'installation.
La version 3.0 était un changement architectural majeur par rapport à la version 2.x. Vous devez essentiellement recommencer en créant un nouveau projet, en générant vos modèles, en utilisant ModelConnectorEditor pour affiner ce qui est généré dans les connecteurs (anciennement appelés MetaControls), puis en copiant le code de votre ancienne version vers la nouvelle version. Vous constaterez que la plupart des choses que vous deviez faire à la main sont désormais effectuées dans le code généré, cela ne prendra donc peut-être pas aussi longtemps que vous le pensez. Hop :-)
La v3.1 propose désormais un suivi des modifications dans les modèles. Au lieu de transférer un objet entier vers la base de données à chaque fois que vous enregistrez un objet, il transmet uniquement les données qui ont changé. Pour ce faire, les variables membres de la superclasse de modèle générée sont privées au lieu d'être protégées, ce qui peut vous obliger à modifier le code dans votre sous-classe de modèle. Pour faciliter la transition, la nouvelle fonctionnalité de variable privée est désactivée par défaut. Vous devrez l'activer en éditant le fichier codegen_settings.xml et en ajoutant un paramètre 'privateColumnVars="true"' à la balise createOptions. Consultez le fichier codegen_settings.xml dans le répertoire qcubed/install/project/configuration pour un exemple.
Cela rendra privées toutes les variables de colonne protégées qui se trouvent dans la classe Gen, vous ne pourrez donc pas y accéder directement à partir de vos sous-classes Model. Par exemple, si vous avez une colonne « Nom » dans un tableau, vous pouvez faire :
$ strName = $ this -> Name ;
ou mieux encore :
$ strName = $ this -> getName ();
mais pas :
$ strName = $ this -> strName ;
$this->Name
route vers $this->getName()
Aussi, au lieu de ceci :
$ this -> strName = $ strName ;
faire:
$ this -> setName ( $ strName );
ou
$ this -> Name = $ strName ;
Les avantages de la nouvelle fonctionnalité incluent de meilleures performances, une réduction des exceptions OptimisticLocking et le fait de vous empêcher d'accéder accidentellement à une valeur qui n'a pas été chargée en raison d'une clause QSelect. De plus, QSelect peut désormais être utilisé pour contrôler ce qui est généré lorsque vous convertissez un objet vers d'autres formats comme JSON.
La v4.0 est un autre changement architectural majeur, conçu pour prendre en charge les normes PSR-1, PSR-2 et PSR-4. La v4 ajoute des espaces de noms à tous les fichiers principaux et bibliothèques. Fini la lettre « Q » devant toutes les classes principales, puisque c'était essentiellement notre façon de faire l'espace de noms avant que les espaces de noms ne soient disponibles en PHP.
Il comprend des outils pour vous aider à automatiser la modification de votre code du code v3.x à la v4.0. Consultez le fichier Lisezmoi dans le référentiel qcubed/application pour plus d'informations.
Une liste des dernières modifications est disponible sur https://github.com/qcubed/qcubed/commits/master
QCubed est issu de QCodo, un projet de Michael Ho. QCubed s'appuie sur JQuery et utilise les bibliothèques jQuery UI pour certains de ses contrôles principaux.