**Nova versão estável: [versão 3.1.0, lançada em 6 de julho de 2017].
A versão estável mais recente da versão 2 pode ser encontrada na ramificação v2.
Junte-se a nós no Slack em qcubed.slack.com. Obtenha seu convite aqui .
QCubed (pronuncia-se 'Q' - cubed) é uma estrutura PHP Model-View-Controller Rapid Application Development com suporte para PHP5 (5.4 e superior) e PHP7. O objetivo da estrutura é economizar tempo de desenvolvimento em tarefas rotineiras e repetitivas - permitindo que você se concentre em coisas que são úteis E divertidas. QCubed se destaca em situações onde você tem uma grande estrutura de banco de dados que deseja disponibilizar rapidamente aos usuários.
Com o QCubed, você não precisa lidar com POSTs e GETs vindos do navegador. O QCubed cuida disso automaticamente para você e empacota as informações em formulários e controles orientados a objetos. Programar com QCubed é muito parecido com programar um aplicativo de desktop. Se você estiver familiarizado com ASP, é semelhante.
O Gerador de Código cria automaticamente classes de objetos com formulários e controles correspondentes com base no esquema do seu banco de dados. Ele usa o conceito de ORM, mapeamento objeto-relacional, para criar praticamente toda a camada do modelo para você.
Codegen pode aproveitar relacionamentos de chave estrangeira e restrições de campo para gerar modelos de dados prontos para uso completos com rotinas de validação e métodos CRUD poderosos, permitindo manipular objetos em vez de emitir consultas SQL constantemente.
Mais informações e exemplos estão disponíveis online em https://qcubed.eu/
O uso de QQueries permite o carregamento de modelos simples, mas poderoso, todas as classes ORM geradas possuem métodos de consulta e QQNodes. Ao usar esses métodos, obter um subconjunto complexo de dados é bastante simples e pode ser usado em praticamente qualquer banco de dados relacional.
QCubed usa o conceito de QForm para manter o estado do formulário entre as transações POST. Um QForm serve como controlador e pode conter QControls que são componentes de UI.
Todos os QControls (incluindo o próprio QForm) podem utilizar um template que é a camada de visualização, completando a estrutura do MVC.
QControls podem aproveitar o FormState do QForm para se atualizarem por meio de retornos de chamada Ajax tão facilmente quanto POSTs de servidor síncrono. Todos os widgets principais da UI do jQuery estão disponíveis como QControls.
Alguns QControls incluem:
A maneira mais fácil de aprender QCubed é ver o tutorial de exemplos em http://qcu.be/examples/
Por meio de seu sistema de plug-ins, o QCubed facilita o empacotamento e a entrega de melhorias e adições à base de código principal. Plugins para a versão atualmente ativa do QCubed residem em repositórios que começam com plugin .
O procedimento de instalação é descrito detalhadamente aqui: Instruções de instalação.
3.0 foi uma grande mudança arquitetônica em relação ao 2.x. Você deve essencialmente recomeçar criando um novo projeto, gerando seus modelos, usando o ModelConnectorEditor para refinar o que é gerado nos conectores (anteriormente chamados de MetaControls) e, em seguida, copiando o código da sua versão antiga para a nova versão. Você descobrirá que muitas das coisas que precisava fazer manualmente agora são feitas em código gerado, portanto, pode não demorar tanto quanto você pensa. Vamos pular :-)
v3.1 Agora possui rastreamento de alterações nos modelos. Em vez de enviar um objeto inteiro para o banco de dados toda vez que você salva um objeto, ele envia apenas os dados que foram alterados. Para fazer isso, ele torna as variáveis de membro na superclasse do modelo gerada privadas em vez de protegidas, o que pode exigir que você altere o código na subclasse do modelo. Para ajudar na transição, o novo recurso de variável privada está desativado por padrão. Você precisará ativá-lo editando o arquivo codegen_settings.xml e adicionando um parâmetro 'privateColumnVars="true"' à tag createOptions. Consulte o arquivo codegen_settings.xml no diretório qcubed/install/project/configuration para obter um exemplo.
Isso tornará privadas todas as variáveis de coluna protegidas que estão na classe Gen, portanto você não poderá acessá-las diretamente de suas subclasses Model. Por exemplo, se você tiver uma coluna "Nome" em uma tabela, poderá fazer:
$ strName = $ this -> Name ;
ou melhor ainda:
$ strName = $ this -> getName ();
mas não:
$ strName = $ this -> strName ;
$this->Name
roteia para $this->getName()
Além disso, em vez disso:
$ this -> strName = $ strName ;
fazer:
$ this -> setName ( $ strName );
ou
$ this -> Name = $ strName ;
Os benefícios do novo recurso incluem melhor desempenho, redução de exceções de OptimisticLocking e prevenção de acesso acidental a um valor que não foi carregado devido a uma cláusula QSelect. Além disso, QSelect agora pode ser usado para controlar o que é gerado quando você converte um objeto para outros formatos como JSON.
A v4.0 é outra grande mudança arquitetônica, projetada para suportar os padrões PSR-1, PSR-2 e PSR-4. v4 adiciona namespaces a todos os arquivos principais e de biblioteca. A letra 'Q' na frente de todas as classes principais se foi, já que essa era essencialmente a nossa maneira de fazer namespaces antes que os namespaces estivessem disponíveis no PHP.
Inclui ferramentas para ajudar a automatizar a alteração do código v3.x para v4.0. Consulte o arquivo Leiame no repositório qcubed/application para obter mais informações.
Uma lista das alterações mais recentes está disponível em https://github.com/qcubed/qcubed/commits/master
QCubed foi uma ramificação do QCodo, um projeto de Michael Ho. QCubed depende de JQuery e usa bibliotecas jQuery UI para alguns de seus controles principais.