HTTP. Webový server. generátor HTML stránek (CGI, Perl, PHP, Python, Ruby, Java, ASP.NET) zpracování požadavku/ odeslání odpovědi.

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

Webové Aplikace (6. přednáška)

Objektově orientované programování v PHP 5. Martin Klíma

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

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

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

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);

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

Skriptovací jazyky. Obsah

Základy PHP. Úvod do jazyka PHP a principů skriptování na straně serveru

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Zápis programu v jazyce C#

Jazyk C# a platforma.net

Programování v jazyce JavaScript

PHP tutoriál (základy PHP snadno a rychle)

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

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

6. Příkazy a řídící struktury v Javě

První kapitola úvod do problematiky

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

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

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

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

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Operační systémy. Cvičení 4: Programování v C pod Unixem

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

PHP. Čtvrtek 8. září. Čtvrtek 15. září. Anonymní test znalostí

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Algoritmizace a programování

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

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

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

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

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Instalace a konfigurace web serveru. WA1 Martin Klíma

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Ukázka knihy z internetového knihkupectví

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

typová konverze typová inference

IUJCE 07/08 Přednáška č. 1


Objektově orientované programování

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

KTE / ZPE Informační technologie

Programovací jazyk C++ Hodina 1

Dynamika na straně serveru

Úvod do programovacích jazyků (Java)

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Programování v jazyce JavaScript

Koláčky, sezení. Martin Klíma

DUM 3 téma: Podmínky a Globální proměnné

Práce s knihovnami. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

KTE / ZPE Informační technologie

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

Výjimky. Tomáš Pitner, upravil Marek Šabo

Architektura softwarových systémů

Úvod do programování - Java. Cvičení č.4

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Kolekce, cyklus foreach

Programování v C++ 1, 1. cvičení

Jaku b Su ch ý 1

Server-side technologie pro webové aplikace

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

1 Webový server, instalace PHP a MySQL 13

--Různé-- Ovladače souborů Formáty Typeglob - záznamy z tabulky symbolů - různé typy objektů se stejným jménem: jmeno %jmeno,&jmeno...

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

2 Datové typy v jazyce C

Základy PHP. Josef Podstata. KTE/IZTT - Zpracování textu, tabulek a prezentací. Univerzita Palackého v Olomouci

Návrh a tvorba WWW stránek 1/38 PHP

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

PHP. 1. Úvod do PHP. 2. Základy PHP

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Prezentace a vysvětlení programového prostředí NXC

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Řídicí struktury. alg3 1

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Java Výjimky Java, zimní semestr

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

Algoritmizace a programování

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

InterSystems Caché Post-Relational Database

Úvod do programovacích jazyků (Java)

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

1. Téma 03 - Rozhodování

Návrh a tvorba WWW stránek 1/14. PHP a databáze

1. Webový server, instalace PHP a MySQL 13

VZOROVÝ STIPENDIJNÍ TEST Z INFORMAČNÍCH TECHNOLOGIÍ

Základy algoritmizace a programování

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

PROGRAMOVÁNÍ V C++ CVIČENÍ

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

Transkript:

Základy jazyka PHP Martin Klíma

Dynamický web Webový klient požadavek HTTP odpověď Stránka 1 Toto je dynamicky generovaná stránka x xxxx xx. zpracování požadavku/ odeslání odpovědi generátor HTML stránek (CGI, Perl, PHP, Python, Ruby, Java, ASP.NET) Data (soubory, RDBMS...) Webový server

Dynamický web proces vzniku stránky Klient Web Server Webová aplikace Databáze HTTP dotaz (POST, GET) Předání dotazu (proměnné dotazu a prostředí) SQL dotaz SQL result Text na standardní výstup HTTP odpověď

Architektura webové aplikace 3 vrstvy Webová aplikace Webový klient požadavek HTTP odpověď Stránka 1 Toto je dynamicky generovaná stránka x xxxx xx. zpracování požadavku vytvoření a odeslání odpovědi výkonná část aplikace (aplikační logika) rozhraní pro přistup k DB Data Prezentační vrstva Vrstva aplikační logiky Databázová vrstva

PHP (PHP Hypertext Preprocessor) Procedurální jazyk C-like syntax Množství funkcí v integrovaných knihovnách i modulech Jednoduchá integrace do webových serverů Od verze PHP5 solidní podpora OOP Není plně objektový

Historie PHP Počáteční autor: Rasmus Lerdorf Další důležití autoři: Zeev Surashi a Andi Gutmans 1995: PHP 1.0 - Personal Home Page Tools (PHP Tools) 2001: PHP 4.1.0 všechny základní rysy dneška 2004: PHP 5.0.0 nový objektový model 2008: PHP 5.3 bezpečnostní vylepšení, jmenné prostory,

PHP Výhody Jednoduchý na učení Podpora pro webové funkce přímo v jazyce Multiplatformní Open Source Web hosting - masová podpora Velká komunita vývojářů Nevýhody Netypovost, nekompiluje se, rychlost, neobjektovost Někdy těžkopádný Některé věci v jazyce jsou nedotažené Svádí k mizernému způsobu programování

C-like syntax Příkazy oddělené středníkem ; Bloky sdružené pomocí { } Komentáře: // řádkové /* blokové */ Přiřazení pomocí = $a=6 Porovnání <, >, ==,!= Proměnné jsou uvedeny pomocí znaku $ - $promenna Kontrolní struktury: if (cond) {..} else {..}, while (cond) {..}, switch/case, for (startcond; increment; endcond) { }, foreach ($pole as $prvek), Prvky pole přístupné pomocí [ ] : $x[4] je 5. element pole $x Asociativní pole: $asocpole[ nazev_prvku ] = 'hodnota prvku'; Funkce volané jménem s argumenty v pevném pořadí uzavřenými do ( ): substr ( retezec,0,2) Case sensitive - $promenna není to samé jako $Promenna

Ukázka syntaxe $pole = array("martin" Martin","Martin" "Martin","Tomas","Radek","Petr"); // vypis for ($i = 0; $i <= 2; $i++) { if (($i % 2) == 0) { echo (substr($pole[$i], 0, 1). "<br />"); } else { echo ('tohle je else'); } }

PHP proměnné, datové typy Přetypování: $x = (int) $y; $x = (bool) $y; $x = (float) $y; $x = (double)$y; $x = (string) $y; $x = (array) $y; $x = (object) $y; Dotazování: is_int($x); is_bool($x); is_float($x); is_double($x); is_string($x); is_array($x); is_object($x); is_resource($x);

PHP proměnné, datový typ <?php $x = "vyska"; $$x = 10; echo $vyska; // 10 echo "<br/>"; echo $$x; //10 $y = 1; //int $y = 1.0; // float $y = "abc"; // string?>

Proměnné - viditelnost <? $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b;?>

Proměnné viditelnost Superglobální proměnné $_GET $_POST $_REQUEST $_COOKIE $_SESSION $_ENV $_FILES $_SERVER $GLOBALS Tyto proměnné jsou viditelné vždy a všude. Není nutné na ně volat global

Proměnné pokřačování Reference a hodnota <?php $jmeno = "František"; echo "Jméno: ".$jmeno; //prirazeni hodnotou $jmeno2 = $jmeno; // reference na $jmeno $jmeno_ref = &$jmeno; //zmenime hodnotu promenne $jmeno $jmeno = "Hugo"; echo "<br/>";?> //test echo "Jmeno: $jmeno, Jmeno2: $jmeno2, Jmeno_ref: $jmeno_ref";

Zvláštnosti Datový typ string Při použití " se obsah řetězce vyhodnotí a proměnná se nahradí hodnotou Při použití ' se obsah řetězce nevyhodnocuje <?php $jmeno = "František"; $prijmeni = "Vomáčka"; echo "$jmeno, $prijmeni"; echo "<br/>"; echo '$jmeno, $prijmeni';?>

Konstanty define ( MOJE_KONSTANTA,1); define ( TVOJE_KONSTANTA, hodnota1 ); echo MOJE_KONSTANTA; echo TVOJE_KONSTANTA; pozor echo moje_konstanta; // vypíše moje_konstanta a varování Pozor! Všechny konstanty jsou ve stejném jmenném prostoru, to může dělat problém při vkládání souborů, např. knihoven

Předdefinované proměnné $_GET $_POST $_REQUEST $_COOKIE $_SESSION $_ENV $_FILES $_SERVER $GLOBALS $php_errormsg $HTTP_RAW_POST_DATA $http_response_header $argc $argv

Předdefinované konstanty těch je mnoho, viz http://www.php.net/manual/en/reserved.constants.php

Pole Pole je nejsilnější datový typ (hned po objektech) Všechna pole jsou asociativní $pole = array(); $pole = array(4,5,6,7,8,9); // indexy od 0 $pole = array(5=>10, 20,30); // první index=5, další 6 $pole = array("pondělí"=>1, "=>1, "úterý"=>2, "středa"=>3); // indexy jsou retezce $pole[] = xxx ; $pole[] = yyy ;

Pole Vícerozměrná pole $pole[1][30] = 20; $pole[3][10] = 22; Iterování polí foreach ($pole as $klic=>$ =>$hodnota) { echo "$klic = $hodnota <br>"; } foreach ($pole as $hodnota) { echo "hodnota pole: $hodnota <br>"; }

Dotazování, mazání if (isset ($pole[1][5])) echo "pole[1][5] je nastaveno"; else echo "pole[1][5] neni nastaveno"; unset ($pole[1][5]);

Operátory, or xor and print = += -= *= /=.= %= &= = ^= <<= >>=? : && ^ & ==!= ===!== < <= > >= << >> + -. * / %! ~ ++ -- (int) (float) (string) (array) (object) @ [ new

Řídící struktury if else elseif while do..while for foreach break continue switch declare return

If <?php $pole = array (1,2,5,6); if (sizeof($pole)>3) echo "velikost > 3"; elseif (sizeof($pole)>1) echo "velikost > 1"; else echo "pole je prázdne";?>

while, do - while $pole = array(1,2,4,5,6); $i=0; while($i < sizeof($pole)) { echo $pole[$i]."<br/>"; $i++; } $i = 0; do { echo $pole[$i]."<br/>"; $i++; } while ($i< sizeof($pole));

For, foreach $pole = array("pondělí"=>1, "úterý"=>2, "středa"=>3); // selhava, protoze pole nema ciselne indexy for ($i=0; $i<sizeof($pole); $i++) { echo $pole[$i]."<br/>"; } // univerzalni, v poradku foreach ($pole as $klic=>$hodnota) { echo "index: $klic hodnota: $hodnota <br/>"; }

switch $jmeno = "Josef"; switch ($jmeno) { case "Karel": echo "ahoj Karle"; break; case "Zdenek": echo "ahoj Zdenku"; break; case "Jarmila": echo "ahoj Jarmilo";break; case "Josef": case "Pepa": echo "ahoj Pepo"; break; default: echo "ahoj neznámý"; }

Funkce a procedury jedno jsou Funkce může a nemusí vracet hodnotu. Návratový typ není deklarován. function sectiprvkypole ($pole) { if (!is_array($pole)) return false; $vysledek = 0; foreach ($pole as $hodnota) { $vysledek += $hodnota; } return $hodnota; } $pole = array(1,2,3); echo sectiprvkypole($pole);

Zpracování chyb v PHP4 a 5 error_reporting() set_error_handler() error_reporting(e_all); function my_error_handler ($severity, $msg, $filename, $line_num) { // dostanu info o chybe a muzu si s ni delat co chci echo "Závažnost: $severity <br/>hláška: $msg <br/> Soubor: $filename <br/> Číslo řádku: $line_num <br/>"; } set_error_handler("my_error_handler"); echo $xxx;

Vyjímky v PHP5 Je zde zaveden lepší způsob ošetřování vyjímek. Podobnost s Javou. Jestliže je vygenerována vyjímka (chyba), je vyroben nový objekt. Každá vyjímka je rozšířením třídy Exception. Odvozením nové třídy lze vyrábět vlastní vyjímky.

Vyjímky PHP 5 class DevZeroException extends Exception {} class NegativValueException extends Exception {} function deleni ($a, $b) { try { if ($b == 0) throw new DevZeroException(); if ($a<0 $b<0) throw new NegativValueException(); return $a/$b; } catch (Exception $e) { echo "doslo k nejake vyjimce!!!!"; return false; } // catch (DevZeroException $e) { echo "nulou nelze delit"; // return false;} // catch (NegativValueException $e2) {echo "negative value odchyceno v ramci funkce"; return false;} } deleni(1,2); deleni(1,0); deleni(-1,5);

Vkládání souborů Použití knihoven = externí soubory Do místa direktivy vloží obsah referovaného souboru 2 základní způsoby pouze jednou iterativně Direktivy programu include "soubor" include_once "soubor" require "soubor" require_once "soubor" rozdíl mezi include a require: funkční rozdíl není include při nenalezení souboru pokračuje v běhu programu, require končí kritickou chybou

Dotazy? DĚKUJI ZA POZORNOST