Stručný úvod pro programátory. Michal Kuchta



Podobné dokumenty
Postup. Úvodem. Hlavní myšlenka frameworku. application. system. assets. uploads

IS pro podporu BOZP na FIT ČVUT

Plánování a vývoj základního frameworku

17. července :51 z moravec@yahoo.com

Obsah. Rozdíly mezi systémy Joomla 1.0 a Systém Joomla coby jednička online komunity...16 Shrnutí...16

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

WNC::WebNucleatCreator

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

Obecní webové stránky.

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

1 Webový server, instalace PHP a MySQL 13

Redakční systém Joomla. Prokop Zelený

Django. Webový framework pro Python Projekt = webová stránka Aplikace = určitá funkcionalita webu

Vstupní požadavky, doporučení a metodické pokyny

Dobrý CMS Popis produktu a jeho rozšíření

Na vybraném serveru vytvoříme MySQL databázi. Soubory scratch.jpa, kickstart.php a en-gb.kickstart.ini nahrajeme na vybraný server.

43 HTML šablony. Záložka Šablony v systému

CMSSS manuál k použití

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro editaci ŽS. Verze 1.

Jaku b Su ch ý 1

FFUK Uživatelský manuál pro administraci webu Obsah

Olga Rudikova 2. ročník APIN

M4 PDF rozšíření. Modul pro PrestaShop.

Úvod do programovacích jazyků (Java)

Doplňky slovníku SPOT

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Instalace a první spuštění Programu Job Abacus Pro

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

MBI - technologická realizace modelu

Reliance 3 design OBSAH

Zabezpečení proti SQL injection

Technologie. Osnovy kurzu: Školení správců systému. 1. den, dopolední blok

Elektronická podpora výuky předmětu Komprese dat

Databáze EMS podacích lístků

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Modul Ankety verze 1.11 pro redakční systém Marwel 2.8 a 2.7

Od grafického návrhu k funkčnímu webu

Dobrý FOTO Popis produktu a jeho rozšíření

1. Webový server, instalace PHP a MySQL 13

Michal Augustýn Microsoft Most Valuable Professional

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Co je (staro)nového v DSpace

Dobrý SHOP Popis produktu a jeho rozšíření

Uživatelský manuál aplikace. Dental MAXweb

KIV/PIA Semestrální práce

Administrační rozhraní Drupalu

DATAMINING SEWEBAR CMS

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

ProjectWise V8 XM Edition

Implementační manuál aplikace Essox Lite pro programátora/webmastera e-shopu

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

DOKUMENTACE REDAKČNÍHO SYSTÉMU PINYA

APS Administrator.ST

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

TÉMATICKÝ OKRUH Softwarové inženýrství

Maturitní otázky z předmětu PROGRAMOVÁNÍ

WORKWATCH ON-LINE EVIDENCE PRÁCE A ZAKÁZEK

Sada 1 - PHP. 03. Proměnné, konstanty

Instalace a konfigurace web serveru. WA1 Martin Klíma

Obsah OLAP A ESO9... 3

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Manuál k systému RS4S. verze 1.2

Windows Server 2003 Active Directory GPO Zásady zabezpečení

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Modul MWA - Publikace a články

DOCHÁZKA. Webový prohlížeč docházky. Osoby

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Střední odborná škola a Střední odborné učiliště, Hořovice

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal

Uživatelský návod pro zpracování geometrických plánů na webu

Pantek Productivity Pack. Verify User Control. Uživatelský manuál

Implementace systémů HIPS: historie a současnost. Martin Dráb

APS Administrator.OP

Zabezpečení proti SQL injection

Jan Forman Manuál CLASSIFICATIO N: public / veřejný dokument IDE NTIFICATIO N N U MBER: AUTH OR:


E-learningový systém pro podporu výuky algoritmů

Aplikace pro srovna ní cen povinne ho ruc ení

Informační systém pro e-learning manuál

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro administrátory. Verze 1.

Django Urls, views, templates

TROJKAM STUDIO, s. r. o. Uživatelská příručka. E-learningový systém MUZA, příručka pro administrátora

ZMĚNY V DATABÁZI A SOUVISEJÍCÍ POLOŽKY S APLIKACÍ ESHOP...

UJO Framework. revoluční architektura beans. verze

Objekty v PHP 5.x. This is an object-oriented system. If we change anything, the users object.

NÁVOD NA OBSLUHU INTERNETOVÉ PREZENTACE. Ataxo Czech s.r.o.

TAXexpert5 modul Kartotéka II.

CMS LARS VIVO VERZE 1.2 Z POHLEDU VIVOJÁŘE

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Případová studie: Adresářové řešení pro webhosting pomocí ApacheDS. Lukáš Jelínek

MySQLi (objektově) Příklad vytvoření instance třídy včetně parametrů pro připojení: $mysqli = new mysqli('localhost', 'login', 'heslo', 'databaze');

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

IceWarp Mail Server { Revoluce v komunikaci }

Transkript:

Stručný úvod pro programátory Michal Kuchta

Alespoň základní znalost PHP Základy klasického OOP a jeho implementaci v PHP Schopnost oprostit se od konvenčního tvoření stránek 2

Framework pro snazší vývoj aplikací v PHP Abstrakce databáze Programový přístup k tvorbě webové aplikace Ověřování uživatelů SEO-friendly URL 3

PHP 5.2 a novější MySQL 5 a novější Apache s podporou mod_rewrite (nebo kompatibilní) (XAMPP?) 4

$ svn co http://svn.gcm.cz/nixfw/ $ cd nixfw $ rm r.svn apps/.svn $ svn co <url aplikace>. $ vim.htaccess Přepsat RewriteBase na root aplikace $ cp apps/site-specific.config.php.dist apps/sitespecific.config.php Vytvořit MySQL databázi a naimportovat do ní soubor scripts/db/database.sql $ vim apps/site-specific.config.php BasePath stejná hodnota jako pro RewriteBase (bez koncového /) Nastavení připojení k MySQL 5

/ - adresář přístupný z webu, libovolný podadresář lze z webu odkazovat /scripts/ - NixFW, obvykle není nutno zasahovat pro vývoj aplikace /apps/ - dostupné moduly (aplikace) Pokud je aplikace samostatná (má vlastní SubWeb), je třeba ji navázat na globální routování. /apps/config.php globální konfigurace /apps/site-specific.config.php konfigurace specifická pro jeden konkrétní server necommituje se do SVN! 6

Modul (aplikace) umístěna v podadresáři adresáře /apps/. Může obsahovat následující podadresáře: templates/ - šablony pro tuto aplikaci templates/design.php výchozí šablona obsahující celou strukturu webu (<html><body> </body></html>). Na patřičném místě <?php include find_template($template);?> pro vložení obsahové části classes/ - třídy modely, controllery, collections, formuláře, Je dobrým zvykem rozdělovat třídy podle jejich typu do dalších podadresářů locale/ - lokalizace pro tuto aplikaci 7

Nová aplikace založit adresář v apps/ Vytvořit podadresářovou strukturu (classes, templates) Začít tvořit controllery (v classes/controllers), navázat je správně na routing (lze použít autorouting) v config.php Vytvořit modely pro data (v classes/models) Vytvořit šablony v adresáři templates Formuláře v classes/forms 8

Způsob vývoje aplikací, kdy jsou data oddělena od jejich řízení a výsledné reprezentace uživateli Model reprezentuje data View frontend prezentace dat uživateli Controller provádí operace s modely a připravuje data pro View. 9

Model reprezentace jedné datové entity (článek, kategorie, ), třída DbRow Collection kolekce, sdružuje datové entity jednoho typu (pole DbRow), třída Collection Controller provádí akce s modely a kolekcemi (spojuje backend a frontend), třída Page, View šablona obsahuje HTML+PHP zobrazující data 10

Potomci třídy DbRow class Article extends DbRow { } DbTree stromová struktura v databázi class DbTree extends DbRow; class ContentTree extends DbTree { } Automatická konfigurace Podle názvu třídy se pokusí získat seznam sloupců z databáze a automaticky se tak nastavit Pokud to selže, ruční konfigurace pomocí properties objektu 11

Získávání hodnot z databáze Konstruktor $article = new Article(10); Pozor na typy musí být int!! throws SQLNoResultException Modifikace hodnot $article->name = Testovací článek ; Uložení hodnot $article->save($commit = true); podpora transakcí automatický commit, ale jde zakázat, viz parametr metody Save(). 12

class Collection construct($objectname) kolekce objektů typu objectname musí být potomci DbRow. Nebo automatická detekce typu podle názvu kolekce $c = new ArticlesCollection() === $c = new Collection( Article ); $c->setorder($column, $direction) $c->setlimit($from, $count) $c->setcondition($column, $match, $value) 13

Iterace: foreach ($c as $article) { echo $article->name; } Stránkování: class Paging $paging = new Paging($collection); O vše se postará, v šabloně je pak pouze třeba zobrazit stránkovací tlačítka 14

Obecně potomek třídy RequestProcessor. Potomci třídy Page vizuální reprezentace dat Potomci třídy ActionProcessor akce, jejímž výsledkem není HTML stránka, ale jen nějaká akce v backendu (ActionLogin, ) Metody v controlleru jednotlivé stránky function index() { $this->display( articles/index.php ); } 15

$this->set($varname, $value) nastavení hodnoty proměnné dostupné v šabloně $this->redirect($path) přesměrování místo zobrazení stránky Automatický rendering Název šablony podle názvu metody a názvu controlleru Articles::View() => articles/view.php Messages::Add( Text, Message::Success); - zprávy o stavu pro uživatele Message::Success, Message::Information, Message::Warning, Message::Error 16

Šablony, ze kterých se sestavuje výsledná podoba dat pro uživatele. Nepoužívá se žádný šablonový systém pouze čisté PHP Spouštěné v kontextu controlleru, jsou k dispozici všechny funkce a properties controlleru. Lokální proměnné nastavené voláním funkce Set() v controlleru. 17

Převod URL na správné volání metody ve třídě Autorouting URL začíná /, parametry (:controller, :action, ) Např.: Vzor: /:controller/:action/* URL: /articles/view/10 Provede kód: $c = new ArticlesPage; $c->view(10); 18

Globání konfigurace v apps/config.php, proměnná $web_config. Třída SubWeb hierarchie routování (má vlastní web_config). $web_config[$url_vzor] = $akce $url_vzor autorouting rule nebo regexp $akce název třídy nebo pole obsahující výchozí hodnoty parametrů (controller, action, ) 19

Usnadnění a zpřehlednění šablon class HTMLHelper extends Helper { } Automaticky dostupní v šablonách (HTMLHelper jako $html, NumberHelper jako $number, ) $html->url() zpětné generování URL podle nastavení $web_config. echo $html->url(array( controller => articles, action => view, 10)); 20

Třída User reprezentace jednoho uživatele $user->haspriv( název práva ) true/false singleton class CurrentUser aktuálně přihlášený uživatel CurrentUser::isLoggedIn() CurrentUser::i() class User Skupiny uživatelů dědění oprávnění Anonymní < Přihlášení < Skupina < Uživatel 21

Uživatel může být ve více skupinách Pokud alespoň jedna ze skupin má právo, uživatel má právo. Nelze říct: Členové skupiny Administrators mohou vše Avšak administrátoři, kteří jsou zároveň členy skupiny BannedUsers nemohou editovat články. V takovémto případě se musí editace článků zakázat každému uživateli zvlášť. 22

Permanentní vlastnosti uživatele $user->getprop($name); $user->setprop($name, $value); 23

Uložení hodnot platných pro jednu uživatelskou návštěvu stránky Session::Get($name); Session::Set($name, $value); 24

Podpora lokalizace statických textů t($string, [$quantity]) z aktuálně platné domény - set_domain($domain) d($domain, $string, [$quantity]) z explicitně určené domény s($string, [$quantity]) hledá překlad ve všech doménách Umístění v locale/<kód>/<domain>.php Definice jazyka v locale/<kód>.php 25

Formuláře se programují podobně jako GUI v C#, Javě, Pythonu, class ArticleAddForm extends Form { } Metoda CreateControls() vytvoření formulářových políček $this->insertcontrol(new TextInput( Název, name, výchozí hodnota )); Metoda Initialized() $this->name = Přidat článek ; $this->submitvalue = Přidat ; $this->callback = AddArticle ; 26

Callback metoda (AddArticle) function AddArticle() { $article = new Article(); $article->name = $this->getcontrol( name )->value; $article->save(); Messages::Add( Článek byl úspěšně vytvořen., Message::Information); } Pokud callback metoda není specifikována, zavolá se zpět controller s nastavenou proměnnou $this->form. Použití ve view: $a = new ArticleAddForm(); $a->show(); $a->free(); 27

Otázky? Jabber, email: niximor@gmail.com ICQ: 61766147 Doxygen: http://home.gcm.cz:10080/nixfw_doc/ + Cheatsheet 28