Qcodo Developement Framework je open-source framework založený na PHP 5, který z existujícího datového modelu vytváří Objektově relační model (ORM), CRUD UI stránky a AJAX hooks. Také obsahuje integrovaný HTML a Javascript toolkit, který přímo pracuje s vygenerovanými entitami. Je to "lehký" framework, který může být užitý pro vývoj malých i velkých webových aplikací.
Vlastnosti
Podporuje databáze MySQL, MSSQL a PostgreSQL.
Do databáze přistupuje prostřednictvím ORM.
Obsahuje moduly pro generování kódu. Ihned po instalaci máme možnost nechat si vygenerovat všechny modely, kontrolery a pohledy.
Pohledy jsou tvořeny převážně PHP kódem doplněným HTML tagy.
Qcodo má velmi jednoduchou instalaci. Po rozbalení je potřeba nakonfigurovat soubor includes/configuration.inc.php, kde se nastavují cesty, url a databáze.
Čistě pro PHP 5 (užívá objekty dle PHP 5).
Popis součástí a funkcionality
Framework se skládá ze tří hlavních komponent: Generátoru kódu, Qforms (OOP generovaný Ajaxový, nebo na serveru generovaný formulář), Qquery (na OOP založený SQL builder), přičemž každá lze použít nezávisle na ostatních. Generátor kódu parsuje existující relační databázovou strukturu a vytváří ORM, stejně jako několik vzdálených interface (SOAP, AJAX) k ORM. V Qcodo může být ORM rozšířeno tak, aby poskytovalo uživatelem definované funkcionality (přes objektové sub-classing). Qforms je dot-Netem inspirovaný šablonový jazyk, ve kterém je každý prvek formuláře objekt, který skrze metody a atributy zobrazuje svou funkcionalitu a stav.
Generování
Pro generování definujeme tabulky, klíče a jejich vztahy, z toho code generator tvoří ORM třídy (modely) , takto vygenerované třídy podporují CRUD .
- Qforms
- obsluhují stránku, formuláře a obsahuje metody k validování polí, tvorbě trigger events a asociované volání AJAX. Qforms úzce navazují na ORM, což umožňuje programovat rychle, iterativně a s malým dopadem na ostatní prvky měnit každý z tří prvků architektury MVC. Qforms oddělují aplikační logiku od funkční, používají čistě jazyk PHP. V tomto případě tedy Qforms fungují jako view a třída jako controller k formuláři. Umožňují práci s vícejazykovými stránkami. V jejich případě se vygeneruje se soubor, který slouží pro překlady a to jak pro výrazy, tak pro celé články.
- Qcontrols
- je architektura řízená událostmi, lze do ní přidat i javascriptové události.
- QPM - Qcodo
- balíčkový manager byl představen spolu s Qcodo verzí O,40, jeho cílem je umožnit uživatelům a členům komunity přímější a úspornější cestu ke sdílení modulů, vylepšení a fixů Qcodo Developement Frameworku.
Databázový model
Generátor využívá tabulky, které mají primární klíč, z nich vygeneruje třídy, metody etc. Sám rozeznává vztahy mezi tabulkami. Tvoří pomocné tabulky pro spolupráci mezi navázanými tabulkami. Tvoří metody pro propojení tabulek se vztahem many X many. Generátor vytváří code DRAFT nichž extendováním vytvářím vlastní formuláře. Při uložení formuláře do databáze se automaticky ukládá datum a čas.
Qcodo Query
- Je to vlastní jazyk pro získávání modelů z DB
- V Qcodo Lze ale používat i SQL selecty
- V současnosti vývojáři pracují na cachování často používaných selectů, avšak ještě nejsou implementované všechny funkcionality, např. vnořené selecty
Ukázky zdrojového kódu
Kód ukazuje vytvoření několik objektů Qcontrol (Qlabel a Qbutton) a přiřazení textu v nich. Také přiřazuje událost QclickEvent tlačítka k QserverAction. Tato akce (která je metoda PHP) jednoduše změní popisek, aby obsahoval text „Hello, World!“. Všechny objekty Qform používají soubor HTML include., v tomto případě definujeme HTML v souboru intro.tpl.php Pro užití správných tagů <form> slouží metody RenderBegin() a RenderEnd(), stejně jako pro další HTML a JavaScript, díky kterému QForm funguje správně. (Qcodo vrátí výjimku, pokud nejsou volány RenderBegin i RenderEnd.)
<?php
require(dirname(__FILE__) . '/../_require_prepend.inc.php');
require(__INCLUDES__ . '/examples/examples.inc.php');
// Definování Qform a všech Qcontrols
class ExamplesForm extends ExamplesBaseForm {
// Local declarations of our Qcontrols
protected $lblMessage;
protected $btnButton;
// Inicializování Controls v průběhu tvorby Form
protected function Form_Create() {
// Define the Label
// When we define any QControl, we must specify the control's ParentObject.
// Note: a QControl's ParentObject is the object that is responsible for rendering
// the control. In most cases, the ParentObject is just the form itself, e.g. "$this",
// because the form is what ends up calling control->Render() in its HTML template include file.
// You can see this call being made in the intro.tpl.php file. (As you get into more complex forms,
// you may have QControl objects who's parents are other QControl objects.)
$this->lblMessage = new QLabel($this);
$this->lblMessage->Text = 'Click the button to change my message.';
// Define the Button
$this->btnButton = new QButton($this);
$this->btnButton->Text = 'Click Me!';
// Add a Click event handler to the button -- the action to run is a ServerAction (e.g. PHP method)
// called "btnButton_Click"
$this->btnButton->AddAction(new QClickEvent(), new QServerAction('btnBut ton_Click'));
}
// The "btnButton_Click" Event handler
protected function btnButton_Click($strFormId, $strControlId, $strParameter) {
$this->lblMessage->Text = 'Hello, world!';
}
}
// Run the Form we have defined
// The QForm engine will look to intro.tpl.php to use as its HTML template include file
ExamplesForm::Run('ExamplesForm');
?>
zdroj: http://examples.qcodo.com/examples/basic_qform/intro.php
Qcodo byla koncipována a vyvinuta Mikem Ho, a jeho společností Quasidea, která zároveň působí jako ústřední správce, který nabízí nové funkce a zprávy prostřednictvím Qcodo webových stránek www.qcodo.com
Nasazení
Framework je zralý a byl nasazen v mnoha prostředích, například předních sociálních sítí, webů organizací z Fortune 500, ale i státních institucích.
NASA Online Projekt - informační systém
NASA online hledání života
Stanford University School of Medicine
Uloop, největší na studenty zaměřený inzertní server
Chess.com, největší na šachy zaměřená sociální sít
Framework byl prezentovaný na mnoha konferencích po celém světě, včetně Zend/PHP konference, konferenci uživatelů MySQL, MySQL Dev zóny [6], AjaxWorld konference, EXPO, a DC PHP. Byl stažen více než 250 000 tisíci uživateli, z více než sto zemí. Odhaduje se, že Qcodem řízené aplikace ročně obslouží více než 100 milionů zobrazení za měsíc.
O dokumentaci
Dokumentace patří mezi problémy tohoto frameworku, je poměrně nepřehledná, špatně se v ní orientuje a je neobsáhlá. Skládá se především z vzorových příkladů s kompletním zdrojovým kódem, čímž částečně kompenzuje své nedostatky. U každého příkladu vidíme jak se přesně zobrazují, ale je zde také dobře okomentovaný zdrojový kód. Příklady vhodně zobrazují jednotlivé funkcionality, které Qcodo zvládá, proto se z nich lze mnoho naučit.
Externí odkazy