**最新の安定リリース: [バージョン 3.1.0、2017 年 7 月 6 日にリリース]。
バージョン 2 の最新の安定バージョンは、v2 ブランチにあります。
qcubed.slack.com の Slack にご参加ください。ここから招待状を入手してください。
QCubed (「Q」と発音 - キューブ) は、PHP5 (5.4 以降) および PHP7 をサポートする PHP モデル-ビュー-コントローラー高速アプリケーション開発フレームワークです。このフレームワークの目標は、日常的で反復的なタスクにかかる開発時間を節約し、役立つことや楽しいことに集中できるようにすることです。 QCubed は、ユーザーがすぐに利用できるようにしたい大規模なデータベース構造がある場合に優れています。
QCubed を使用すると、ブラウザからの POST や GET を処理する必要がありません。 QCubed はそれを自動的に処理し、情報をオブジェクト指向のフォームとコントロールにパッケージ化します。 QCubed を使用したプログラミングは、デスクトップ アプリケーションのプログラミングとよく似ています。 ASP に精通している場合は、これと似ています。
コード ジェネレーターは、データベース スキーマに基づいて、一致するフォームとコントロールを持つオブジェクト クラスを自動的に作成します。 ORM、オブジェクト リレーショナル マッピングの概念を使用して、実際にモデル層全体を作成します。
Codegen は外部キー関係とフィールド制約を利用して、検証ルーチンと強力な CRUD メソッドを備えたすぐに使用できるデータ モデルを生成できるため、SQL クエリを継続的に発行する代わりにオブジェクトを操作できるようになります。
詳細情報と例は、https://qcubed.eu/ でオンラインで入手できます。
QQueries を使用すると、モデルのシンプルかつ強力なロードが可能になり、生成されたすべての ORM クラスには Query メソッドと QQNodes が含まれます。これらのメソッドを使用すると、データの複雑なサブセットを取得するのが非常に簡単になり、ほぼすべてのリレーショナル データベースで使用できます。
QCubed は QForm の概念を使用して、POST トランザクション間でフォームの状態を維持します。 QForm はコントローラーとして機能し、UI コンポーネントである QControl を含めることができます。
すべての QControl (QForm 自体を含む) はビュー層であるテンプレートを使用でき、MVC 構造を完成させます。
QControl は QForm の FormState を利用して、同期サーバー POST と同じくらい簡単に Ajax コールバックを通じて自身を更新できます。すべての jQuery UI コア ウィジェットは QControl として利用できます。
一部の QControl には次のものが含まれます。
QCubed を学習する最も簡単な方法は、http://qcu.be/examples/ にあるサンプル チュートリアルを参照することです。
QCubed は、プラグイン システムを通じて、コア コードベースへの機能拡張や追加をパッケージ化し、提供することを容易にします。 QCubed の現在アクティブなバージョンのプラグインは、 pluginで始まるリポジトリに存在します。
インストール手順については、「インストール手順」で詳しく説明されています。
3.0 は 2.x からアーキテクチャが大きく変更されました。基本的には、新しいプロジェクトを作成し、モデルを生成し、ModelConnectorEditor を使用してコネクタ (以前は MetaControls と呼ばれていました) で生成されたものを調整し、古いバージョンから新しいバージョンにコードをコピーすることから最初からやり直す必要があります。手動で行う必要があった作業の多くは、生成されたコードで実行できるため、思ったほど時間はかからないことがわかります。飛び跳ねましょう:-)
v3.1 では、モデルに変更追跡が追加されました。オブジェクトを保存するたびにオブジェクト全体をデータベースにプッシュするのではなく、変更されたデータのみをプッシュします。これを行うには、生成されたモデル スーパークラスのメンバー変数を保護ではなくプライベートにします。これにより、モデル サブクラスのコードの変更が必要になる場合があります。移行を支援するために、新しいプライベート変数機能はデフォルトでオフになっています。 codegen_settings.xml ファイルを編集し、createOptions タグに「privateColumnVars="true"」パラメータを追加して、これをオンにする必要があります。例については、qcubed/install/project/configuration ディレクトリーにある codegen_settings.xml ファイルを参照してください。
これにより、Gen クラス内の保護された列変数はすべてプライベートになるため、Model サブクラスから直接アクセスできなくなります。たとえば、テーブルに「名前」列がある場合、次のことができます。
$ 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 などの他の形式に変換するときに生成される内容を制御できるようになりました。
v4.0 は、PSR-1、PSR-2、および PSR-4 標準をサポートするように設計されたもう 1 つの主要なアーキテクチャ変更です。 v4 では、すべてのコア ファイルとライブラリ ファイルに名前空間が追加されます。すべてのコアクラスの前にある文字「Q」がなくなりました。これは、PHP で名前空間が使用可能になる前に、本質的に名前空間を設定する方法だったからです。
これには、v3.x コードから v4.0 へのコード変更を自動化するのに役立つツールが含まれています。詳細については、qcubed/application リポジトリの Readme ファイルを参照してください。
最新の変更のリストは、https://github.com/qcubed/qcubed/commits/master で入手できます。
QCubed は、Michael Ho 氏のプロジェクトである QCodo から派生したものです。 QCubed は JQuery に依存しており、そのコア コントロールの一部に jQuery UI ライブラリを使用します。