**Новейшая стабильная версия: [версия 3.1.0, выпущена 6 июля 2017 г.].
Самую последнюю стабильную версию версии 2 можно найти в ветке v2.
Присоединяйтесь к нам в Slack на qcubed.slack.com. Получите приглашение здесь .
QCubed (произносится как «Q» — кубед) — это среда быстрой разработки приложений PHP «модель-представление-контроллер» с поддержкой PHP5 (5.4 и выше) и PHP7. Цель фреймворка — сэкономить время разработки на рутинных, повторяющихся задачах, позволяя вам сконцентрироваться на полезных и увлекательных вещах. QCubed превосходен в ситуациях, когда у вас есть большая структура базы данных, которую вы хотите быстро сделать доступной для пользователей.
С QCubed вам не придется иметь дело с POST и GET, поступающими из браузера. QCubed автоматически обрабатывает это за вас и упаковывает информацию в объектно-ориентированные формы и элементы управления. Программирование с помощью QCubed очень похоже на программирование настольного приложения. Если вы знакомы с ASP, ситуация аналогичная.
Генератор кода автоматически создает классы объектов с соответствующими формами и элементами управления на основе схемы вашей базы данных. Он использует концепцию ORM, объектно-реляционного отображения, чтобы практически создать за вас весь уровень модели.
Codegen может использовать преимущества отношений внешнего ключа и ограничений полей для создания готовых к использованию моделей данных, дополненных процедурами проверки и мощными методами CRUD, что позволяет вам манипулировать объектами вместо постоянной выполнения SQL-запросов.
Дополнительную информацию, а также примеры можно найти на сайте https://qcubed.eu/.
Использование QQueries обеспечивает простую, но мощную загрузку моделей. Все сгенерированные классы ORM имеют методы Query и QQNodes. Используя эти методы, получить сложное подмножество данных довольно просто, и их можно использовать практически в любой реляционной базе данных.
QCubed использует концепцию QForm для сохранения состояния формы между транзакциями POST. QForm служит контроллером и может содержать элементы QControl, которые являются компонентами пользовательского интерфейса.
Все элементы управления QControl (включая сам QForm) могут использовать шаблон, который является слоем представления, завершающим структуру MVC.
QControls могут использовать преимущества FormState QForm для обновления через обратные вызовы Ajax так же легко, как и синхронные серверные POST. Все основные виджеты пользовательского интерфейса jQuery доступны как элементы управления QControl.
Некоторые элементы управления QControl включают в себя:
Самый простой способ изучить QCubed — просмотреть учебник с примерами по адресу http://qcu.be/examples/.
Благодаря своей системе плагинов QCubed позволяет легко упаковывать и доставлять улучшения и дополнения к основной базе кода. Плагины для текущей активной версии QCubed находятся в репозиториях, имена которых начинаются с плагина .
Подробно процедура установки описана здесь: Инструкция по установке.
Версия 3.0 представляла собой серьезное архитектурное изменение по сравнению с версией 2.x. По сути, вам следует начать все сначала, создав новый проект, сгенерировав свои модели, используя ModelConnectorEditor для уточнения того, что генерируется в коннекторах (раньше они назывались MetaControls), а затем скопировав код из старой версии в новую. Вы обнаружите, что многие вещи, которые вам приходилось делать вручную, теперь выполняются в сгенерированном коде, поэтому это может занять не так много времени, как вы думаете. Попрыгаем :-)
v3.1 Теперь есть отслеживание изменений в моделях. Вместо того, чтобы отправлять весь объект в базу данных каждый раз, когда вы сохраняете объект, он помещает только те данные, которые изменились. Для этого он делает переменные-члены в созданном суперклассе модели частными, а не защищенными, что может потребовать от вас изменения кода в подклассе модели. Чтобы облегчить переход, новая функция частной переменной по умолчанию отключена. Вам нужно будет включить его, отредактировав файл codegen_settings.xml и добавив параметр «privateColumnVars="true"» в тег createOptions. Пример см. в файле codegen_settings.xml в каталоге qcubed/install/project/configuration.
Это сделает все переменные защищенного столбца, которые находятся в классе Gen, частными, поэтому вы не сможете получить к ним прямой доступ из подклассов модели. Например, если в таблице есть столбец «Имя», вы можете сделать:
$ strName = $ this -> Name ;
или еще лучше:
$ strName = $ this -> getName ();
но не:
$ strName = $ this -> strName ;
$this->Name
направляет к $this->getName()
Также вместо этого:
$ this -> strName = $ strName ;
делать:
$ this -> setName ( $ strName );
или
$ this -> Name = $ strName ;
Преимущества новой функции включают повышение производительности, уменьшение количества исключений OptimisticLocking и предотвращение случайного доступа к значению, которое не было загружено из-за предложения QSelect. Кроме того, QSelect теперь можно использовать для управления тем, что генерируется при преобразовании объекта в другие форматы, например JSON.
Версия 4.0 — еще одно серьезное архитектурное изменение, предназначенное для поддержки стандартов PSR-1, PSR-2 и PSR-4. v4 добавляет пространства имен ко всем файлам ядра и библиотеки. Исчезла буква «Q» перед всеми основными классами, поскольку это был, по сути, наш способ создания пространства имен до того, как пространства имен стали доступны в PHP.
Он включает в себя инструменты, помогающие автоматизировать изменение кода с версии 3.x на версию 4.0. Дополнительную информацию смотрите в файле Readme в репозитории qcubed/application.
Список последних изменений доступен по адресу https://github.com/qcubed/qcubed/commits/master.
QCubed был ответвлением QCodo, проекта Майкла Хо. QCubed опирается на JQuery и использует библиотеки пользовательского интерфейса jQuery для некоторых основных элементов управления.