9.óra CodeIgniter Framework #1. Gyimesi Ákos

Hasonló dokumentumok
10.óra CodeIgniter Framework #3. Gyimesi Ákos

Mi is ez? A Ruby nyelvre épülő nyílt forráskódú keresztplatformos MVC (Model-View-Controller) mintára épülő webalkalmazás-keretrendszer

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

MVC. Model View Controller

JEE tutorial. Zsíros Levente, 2012

WEBES ALKALMAZÁSFEJLESZTÉS 1.

WEBES ALKALMAZÁSFEJLESZTÉS 1.

Biztonságos PHP a gyakorlatban

Webes alkalmazások fejlesztése. Bevezetés az ASP.NET MVC 5 keretrendszerbe

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Symfony kurzus 2014/2015 I. félév. Controller, Routing

<Insert Picture Here> Migráció MS Access-ről Oracle Application Express-re

Web-fejlesztés NGM_IN002_1

Web programozás. 3. előadás

mikroformátumok avagy a kisbetűs szemantikus web SZÁNTAI KÁROLY Magyarországi Web Konferencia 2008

JavaServer Pages (JSP) (folytatás)

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Tudás Reflektor. Copyright 2011; Kodácsy Tamás;

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Model View Controller alapú alkalmazásfejlesztés

WEBES ALKALMAZÁSFEJLESZTÉS 1.

JAVA webes alkalmazások

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Adatbányászat és Perszonalizáció architektúra

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

Adatbázis, adatbázis-kezelő

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő A PHP programozási nyelv JDBC, ODBC

API tervezése mobil környezetbe. gyakorlat

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Symfony kurzus 2014/2015 I. félév. Security: authentication, authorization, user provider, role-ok, access control, FOS user bundle

Természetesen készíts egy csempe nevű könyvtárat és ide mentsd az index.html állományt.

Java Programozás 11. Ea: MVC modell

Két tűz között. statikus site generátorok és javascript alkalmazások és a Drupal

Java technológiák - ANTAL Margit. komponensek. A HTTP protokoll. Webkonténerek és szervletek. Egyszerű HTTP. ANTAL Margit.

Webes alkalmazások fejlesztése. 9. előadás Bevezetés az ASP.NET MVC keretrendszerbe

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Internet technológiák

Algoritmus terv. 1. Algoritmus általános áttekintése. 2. Inputok és outputok definiálása. 3. Folyamatok meghatározása. 4. Programozási utasítások

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté

CodeIgniter keretrendszer

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

Google Web Toolkit. Elek Márton. Drótposta kft.

WEBFEJLESZTÉS 2. MUNKAMENET-KEZELÉS, HITELESÍTÉS

Blahota István. SQLite alapok

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

Webshop készítése ASP.NET 3.5 ben I.

Az SQL*Plus használata

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Megtanuljuk, hogyan lehet egy web-alkalmazással adatbázishoz csatlakozni Pontosan megnézzük a PHP lehetőségeit o MySQL-hez o Oracle-höz

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

ANDROID ALKALMAZÁSFEJLESZTÉS

Web-fejlesztés NGM_IN002_1

r e l o a d. n o n p r o f i t f o r u m. e u Telepítési útmutató 3. RELOADED

Stateless Session Bean

Gyakorlati vizsgatevékenység A

JSF alkalmazások teljesítményhangolása JMeter és dynatrace segítségével

Web programozás I. 4. előadás

1. beadandó feladat dokumentáció

WEB PROGRAMOZÁS 3.ELŐADÁS. Űrlapok

PHP gyorstalpaló, avagy a Hello World-től az űrlapellenőrzésig

Struts2 keretrendszer

Smarty AJAX. Miért jó ez? Ha utálsz gépelni, akkor tudod. Milyen műveletet tudunk elvégezni velük:

Weboldalak Biztonsági Kérdései

AJAX Framework építés. Nagy Attila Gábor Wildom Kft.

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (ASP.NET)

Miért érdemes váltani, mikor ezeket más szoftverek is tudják?

Adatbázis. AMP! (Apache + MySql + PHP) XAMPP, LAMP, MAMP, WAMP et cetera

Adatbázisok webalkalmazásokban

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

CMS-en túli webes megoldások

Valimed API. REST API a magyarországi orvos pecsétszámok validálására

Földmérési és Távérzékelési Intézet

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Webapp (in)security. Gyakori hibákról és azok kivédéséről fejlesztőknek és üzemeltetőknek egyaránt. Veres-Szentkirályi András

A Http és a PHP kapcsolata. Web-Sky Consulting Kft Tóth Imre 2009

Közösség, projektek, IDE

MIKOVINY SÁMUEL TÉRINFORMATIKAI EMLÉKVERSENY

Web-fejlesztés NGM_IN002_1

Biztonság java web alkalmazásokban

Algoritmus terv 3. Fejezet: Folyamatok meghatározása

kodolosuli.hu: Interaktív, programozást tanító portál BALLA TAMÁS, DR. KIRÁLY SÁNDOR NETWORKSHOP 2017, SZEGED

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

PHP. Adatbázisok gyakorlat

Multimédia 2017/2018 II.

ASP.NET CORE MVC Model réteg bevezetése Model Binding Repository tervezési minta Dependency Injection Transient és Singleton Custom Binding AutoMapper

Élő webes alkalmazások rendszerfelügyelete cím- és tartalomteszteléssel

Gyakorlati vizsgatevékenység B

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK STRUKTÚRA ALAPÚ, VAGY FEHÉRDOBOZ TECHNIKÁK TAPASZTALAT ALAPÚ TECHNIKÁK

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

SZERVER OLDALI JAVASCRIPT. 8. hét MongoDB, séma tervezés, performancia kérdések

Moodle -egy ingyenes, sokoldalú LMS rendszer használata a felsőoktatásban

Webes alkalmazások fejlesztése

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

Átírás:

9.óra CodeIgniter Framework #1 Gyimesi Ákos gyimesi.akos@gmail.com http://webprog.gy-i-m.com

Miért van szükség keretrendszerre? Keretet ad, hogyan álljunk neki a feladatnak Előre definiált felépítés, ami az esetek 90%-ában jó Jól kitalált architektúra nem lesz spagettikód

Miért van szükség keretrendszerre? Tipikus webes feladatok megkönnyítése űrlapkezelés (input validáció, kirajzolás...) munkamenet (session) kezelés adatbázis kezelés DB kapcsolat(ok) nyilvántartása ismétlődő feladatok (pl. egyszerű INSERT) megkönnyítése rendes email küldő rendszer csatolmányok, HTML levelek hibakezelés PHP error helyett We're sorry oldal + naplózás cache-elés

Miért van szükség keretrendszerre? Jobb keretrendszerekben van ezenkívül: fejlesztői - tesztelő - éles konfigurációk elkülönítése automatikus adatbázis migrálás éles rendszeren tesztelői keretrendszer unit tesztek futtatása, kiértékelése összetett cselekvéssorozat (pl. regisztráció) tesztelése tesztadatok kezelése (külön adatbázisban) web service támogatás admin felület generátor Nem nekünk kell feltalálni a spanyolviaszt...

Egy kis történelem... 2004: Ruby on Rails megjelenése szerző: David Heinemeier Hansson (37signals) forradalmi újítás az akkori keretrendszerekhez képest: nagyon minimalista, MVC alapú felépítés Convention over Configuration DRY (Don't Repeat Yourself!) a kód tömör, olvasható, élvezet kódolni

Ruby on Rails - példa Egyszerű könyvadatbázis alkalmazás: http://example.com - könyvek listázása http://example.com/create - új könyv beszúrása űrlap validáció van jogosultságellenőrzés nincs adott: egy SQL adatbázis 'books' táblával:

Ruby on Rails - példa app/controllers/book_controller.rb: class BookController < ApplicationController def index @books = Book.find :all end end Adatbázis lekérés... helyett

Ruby on Rails - példa app/models/book.rb: class Book < ActiveRecord::Base end?!

Ruby on Rails - példa app/views/news/index.rhtml: <% @books.each do book %> <h2><%= h book.title %></h2> <p><%= h book.description %></p> <% end %> htmlspecialchars()

Ruby on Rails - példa app/views/layouts/application.rhtml: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html lang='hu' xml:lang='hu' xmlns='http://www.w3.org/1999/xhtml'> <head> <title>könyvesbolt</title> <meta content='text/html; charset=utf-8' http-equiv='content-type' /> </head> <body> <%= yield %> </body> </html include-ok helyett

Ruby on Rails - példa app/controllers/book_controller.rb: class BookController < ApplicationController def index @books = Book.find :all end def create @book = Book.new if request.post? @book.update_attributes params[:book] redirect_to(:action => 'index') if book.save end end end beszúródik VAGY megjelenik validál + beszúr + redirect-el POST adattal feltöltés

Ruby on Rails - példa app/models/book.rb: class Book < ActiveRecord::Base validates_presence_of :title, :price validates_numericality_of :price end??!!

Ruby on Rails - példa app/views/news/create.rhtml: <% form_for :book do f %> <%= f.error_messages %> validációs hibák kiírása űrlap mezők kiírása + kitöltése a POST-olt adatokkal <div>title: <%= f.text_field :title %></div> <div>description: <%= f.text_area :description %></div> <div>price: <%= f.text_field :price %></div> <div><%= submit_tag 'OK' %></div> <% end %> submit gomb

Ruby on Rails - példa Listázó oldal + beszúró űrlap validációval: 33 sor Ezért már érdemes keretrendszert használni!... (bár azért PHP-tól ilyen szintű kényelmet ne várjunk...)

MVC keretrendszerek Ruby on Rails alapelvek (ismétlés): egyszerű, MVC alapú felépítés Convention over Configuration Don't Repeat Yourself

MVC - Model View Controller Elv: élesen szét kell választani 3 dolgot: Model: adatok kezelése adatbázisműveletek adatok ellenőrzése (validáció) View: megjelenítés HTML vagy más output előállítása tehát csak ebben van print utasítás Controller: oldal logikáját adja: bemenete az user input (GET, POST, SESSION) user input alapján a Model-el műveleteket végez (pl. rekordokat kér el az adatbázisból) Model outputját átadja a View-nak megjelenítés

MVC - Model View Controller Másképpen megfogalmazva: Model: adatbáziskezelő osztályok összessége csak itt vannak SQL-ek View: HTML sablonok összessége más nincs itt, csak: print, if-then-else, foreach, kiíráshoz szükséges segédfüggvények Controller: ez az, amit az user közvetlenül meghív a böngészőből csak itt van: GET, POST, SESSION, redirect az ő feladata, hogy kiválassza a működéshez szükséges Model-t és View-t

MVC - Model View Controller HTTP kérés http://example.com/create + POST adatok WEB APPLICATION SQL HTTP válasz Database HTML oldal vagy redirect kérés

MVC - Model View Controller isadmin( $_SESSION['uid'] ) User Model create() Book Controller true SELECT createbook($formdata) URL POST, COOKIE Dispatcher $formdata $errors $errors Book Model INSERT Database HTML Create Book View WEB APPLICATION

MVC - Model View Controller Miért jó ez a kódelválasztás? Model: nem függ az user inputtól pl. User model bármilyen controllerből használható View: pár input paraméter alapján ír ki HTML-t design bátran átalakítható HTML kiírás is újrahasznosítható pl. létrehozás űrlapot lehet szerkesztésre is használni, csak a $formdata-ban kell mást átírni Controller: nem lesz spagettikód itt van a legbonyolultabb logika jó, hogy nem itt van minden más is

Convention over Configuration Válasz az enterprise rendszerekre: mindent konfiguráljunk XML-ben - helyett: legyen egy default, ami az esetek 90%-ában jó semmi teendőnk biztosítsunk lehetőséget a maradék 10%-ra is

Convention Over Configuration Példa: URL parse-olás megfigyelés: a legtöbb oldal 2-3 szintű: news index view ID create edit user ID login register forgot_password

Convention Over Configuration Példa: URL parse-olás megfigyelés: a legtöbb oldal 2-3 szintű: ötlet: legyen az URL struktúrája is ilyen! http://example.com/news http://example.com/news/create http://example.com/news/view/123 action id

Convention Over Configuration Példa: URL parse-olás megfigyelés: a legtöbb oldal 2-3 szintű: ötlet: legyen az URL struktúrája is ilyen! http://example.com/news http://example.com/news/create http://example.com/news/view/123 controller action id ötlet 2: legyen a controller struktúrája is ilyen!

Convention over Configuration Controllerek felépítése (most már PHP): application/controllers/news.php: class News extends Controller { function index() { // http://example.com/news } function create() { // http://example.com/news/create } } function view($id) { // http://example.com/news/view/123 } Ahol ez nem jó: regexp alapú URL parse-olás

Don't Repeat Yourself Gyakran használt funkciók megkönnyítése Példa: SQL select // Ruby on Rails @news = News.find_by_id(42) // CodeIgniter $result = $this->db->get_where('news', array( 'id' => 42 ));

PHP MVC keretrendszerek Legismertebb PHP keretrendszerek: Zend Framework Symfony CakePHP CodeIgniter Kohana Yii... Mindegyik kb. hasonló felépítésű, hasonló elvekre épül

CodeIgniter A CodeIgniter keretrendszer Első keretrendszernek ideális, mert: Kicsi, egyszerű, a keretrendszer kódja is könnyen átlátható Minimális magic van benne: csak osztály leszármazás + függvényhívás könnyű átlátni, melyik hívás hova megy View: egyszerű PHP szkriptek Nagyon jól dokumentált (http://codeigniter.com) Működik out-of-the-box (kb. csak egy unzip kell) Mindent tud, ami kell a nagyházihoz: fel- és letöltések támogatása email küldés űrlap validáció...

CodeIgniter A CodeIgniter hátrányai: PHP 4 alapú: régi stílusú osztályok használata konstruktor neve: construct() helyett ClassName() nincs benne SQLite3 támogatás PDO driver-t telepíteni kell Hiányzó funkciók: nincs automatikus CSRF védelem DB réteg (ActiveRecord) elég primitív (PHP5 kéne...) Továbblépéshez ajánlott: Kohana Framework CodeIgniter-ből vált le, de újraírták PHP 5-ben elegánsabb, modernebb - de hiányos a dokumentáció...