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í.

Qcodo
Typ softwarusystém pro správu obsahu a webový aplikační framework
Licencelicence MIT
Webwww.qcodo.com
Některá data mohou pocházet z datové položky.

Vlastnosti editovat

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 editovat

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í editovat

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 editovat

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 editovat

- 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 editovat

Užití Qforms editovat

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

Další informace editovat

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í editovat

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 editovat

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 editovat