WEBFEJLESZTÉS 2. PHP NYELVI ALAPOK

Hasonló dokumentumok
WEBFEJLESZTÉS 2. PHP NYELVI ALAPOK, HTML KIMENET, PHP BEMENET, ŰRLAPOK

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

A webhelyhez kötődő szoftverek architektúrája

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

WEB PROGRAMOZÁS 1.ELŐADAS. Dr. Pál László Sapientia EMTE, Csíkszereda, tanév, I. Félév

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Programozás II. 2. Dr. Iványi Péter

PHP. Adatbázisok gyakorlat

A JavaScript főbb tulajdonságai

WEBFEJLESZTÉS 2. ADATTÁROLÁS, FÁJLOK

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet

A PHP nyelv alapjai. Web-Sky Consulting Kft Tóth Imre 2009

Hálózati architektúrák és Protokollok GI Kocsis Gergely

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

A C# programozási nyelv alapjai

Hálózati architektúrák és Protokollok GI Kocsis Gergely

Web-technológia PHP-vel

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

Web programoz as

Szerver oldali technológiák Szerver oldali script nyelvek PHP

1. Alapok. Programozás II

Szkriptnyelvek. 1. UNIX shell

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

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

Java Challenge második forduló játékszabályai v1.2

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

Internet programozása. 1. előadás

Segédlet a Hálózati architektúrák és protokollok laborgyakorlathoz v0.6

BASH script programozás II. Vezérlési szerkezetek

Informatika terméktervezőknek

Algoritmizálás + kódolás C++ nyelven és Pascalban

Hálózati architektúrák és Protokollok GI Kocsis Gergely

Web fejlesztés IV. Illés Zoltán ELTE TTK Informatika I n f o r m a t i k a

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

Pénzügyi algoritmusok

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozási nyelvek JAVA EA+GY 1. gyakolat

Bevezetés a programozásba I.

PHP MySQL, Java JDBC MySQL. Adatbázisok az iskolában 2012 Dr. Balázs Péter Palatinus Endre és Erdőhelyi Balázs diái alapján

Java II. I A Java programozási nyelv alapelemei

Hálózati architektúrák és Protokollok GI - 9. Kocsis Gergely

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

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

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

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Szkriptnyelvek II. Perl programok

Programozási nyelvek (ADA)

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

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

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Programozás II. 4. Dr. Iványi Péter

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Számítógépes Hálózatok. 3. gyakorlat

WEBFEJLESZTÉS 2. BEMENET, ŰRLAPOK

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

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

Bevezetés a programozásba. 6. Előadás: C++ bevezető

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Bevezetés a programozásba I.

Rohonczy János: World Wide Web - Világháló

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

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

Összefüggő szakmai gyakorlat témakörei évfolyam. 9. évfolyam

Mintavételes szabályozás mikrovezérlő segítségével

Hálózati Architektúrák és Protokollok GI BSc. 10. laborgyakorlat

Bevezetés a programozásba I.

és az instanceof operátor

Web-fejlesztés NGM_IN002_1

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Programozási nyelv Java

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Készítette: Nagy Tibor István

Maximum kiválasztás tömbben

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Hypertext Transfer Protocol (HTTP)

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

A HTTP protokoll. A standard egy URI (Unified Resource Identifier = egységes forrás azonosító) megnevezésű címet definiál, amely lehet:

HTML. Ismerkedés a JavaScripttel. A JavaScript lehet ségei. A JavaScript kód helye. Önálló JavaScript fájlok

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Imperatív programozás

Hálózati architektúrák és Protokollok MI 7,8. Kocsis Gergely

Összefüggő szakmai gyakorlat témakörei. 13 évfolyam. Információtechnológiai gyakorlat 50 óra

Operációs Rendszerek II. labor. 2. alkalom

A Python programozási nyelv

AWK programozás, minták, vezérlési szerkezetek

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

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Fogalma. pont), a hiperszöveges és a hipermediális rendszerek

Alapfogalmak, WWW, HTTP

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök

Webes alapozás. url, http, szerver oldal

Programozás C++ -ban 2007/1

Szoftvertechnológia alapjai Java előadások

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Pénzügyi algoritmusok

S z á m í t ó g é p e s a l a p i s m e r e t e k

Bevezetés a programozásba. 11. Előadás: Esettanulmány

Átírás:

WEBFEJLESZTÉS 2. PHP NYELVI ALAPOK Horváth Győző Egyetemi adjunktus 1117 Budapest, Pázmány Péter sétány 1/C, 2.420 Tel: (1) 372-2500/1816

2 Szerveroldali dinamizmus

Kliensoldali webprogramozás 3 Kliens-szerver architektúra Statikus kliens Dinamikus kliens Nem érdekes a szerver, csak az onnan érkező tartalom Nem is kell szerver, dolgozhatunk lokálisan Programozás a böngészőben JavaScript, DOM, stb. Szerver Kliens

Kliens-szerver architektúra 4 Érdekes a szerver is, sőt most vele foglalkozunk Két komponens: szerver és kliens mindkettőre szükség van térben és időben elválhatnak Csatorna: hálózat Kommunikáció: HTTP Szerver 1 2 Kliens Kliens idő

Statikus állományok 5 Kérés pillanatában a szerveren megtalálható az a tartalom, amely leküldésre kerül a válaszban Fájlkiszolgálás Kiterjesztés alapján.html.jpg,.png,.gif.css.js Szerver Kliens

Dinamikus tartalom generálása 6 A leküldendő tartalmat egy program állítja elő. Program Kliens

Szerveroldali webprogramozás 7 Az állományok nem egyszerűen visszaküldésre kerülnek Szerver 2 CGI 3 Program Szerver egy programnak adja át a vezérlést 1 HTTP 4 A leküldendő tartalmat egy program állítja elő. Kliens A program kimenetét a szerver elküldi a kliensnek.

Hogyan indul el a program? 8 Mi alapján dönti el a webszerver? útvonal: cgi-bin könyvtár futtatható állományok csak ezen belül kiterjesztés.cgi.php Szerver 2 CGI 3 Program 1 HTTP 4 Kliens

Milyen program lehet? 9 Bármilyen program lehet 2 Bináris Szerver CGI Program C++ 3 Freepascal 1 HTTP 4 Szkript Shell szkript Kliens Perl PHP Python

Szerveroldali webprogramozás 10 Program célja, kimenete HTML generálás (általában) HTTP protokoll betartásával Program helyességét a generált tartalom, a megkapott oldal forrása alapján ellenőrizhetjük.

11 HTTP protokoll

HTTP protokoll 12 Kérés-válasz alapú protokoll a kliens és szerver között Mindig a kliens kezdeményez Kliens: kérés kérést küld a 80-as TCP portra jellemzően böngésző (hivatkozások, formok) Szerver: válasz TCP/IP réteg feletti protokoll

HTTP protokoll 13 W3C szabvány RFC-k 0.9 verzió (1991) 1.0 verzió (1996) RFC 1945 1.1 verzió (1999) RFC 2086, RFC2616 http://tools.ietf.org/html/rfc2616 http://www.w3.org/protocols/rfc2616/rfc2616.ht ml

HTTP kérés 14 METÓDUS ERŐFORRÁS VERZIÓ FEJLÉC: ÉRTÉK FEJLÉC: ÉRTÉK FEJLÉC: ÉRTÉK ÜZENETTEST (opcionális)

HTTP kérés példa 15 GET /index.html HTTP/1.1 Host: webprogramozas.inf.elte.hu GET / HTTP/1.1 Host: webprogramozas.inf.elte.hu User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: hu-hu,hu;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Cookie: utma=159741371.1255432553.1308299517.1308299517.1308299517.1; utma=32143338.2145495546.1326532899.1361177845.1362134456.25; utmz=32143338.1361177845.24.12.utmcsr=google utmccn=(organic) utmcmd=organic utmctr=(not%20provided) Connection: keep-alive

HTTP kérés metódusok 16 GET Megadott erőforrás letöltése POST Feldolgozandó adat felküldése HEAD Ld. GET, de csak a válasz fejléceket kéri le PUT Feltölt a megadott erőforrást DELETE Törli a megadott erőforrást

HTTP kérés metódusok 17 TRACE Visszaküldi a kapott kérést OPTIONS A szerver által támogatott HTTP metódusok listája CONNECT Kérést transzparens tunnellé alakítja (SSL-hez kell)

HTTP válasz 18 VERZIÓ STÁTUSZKÓD INDOKLÁS FEJLÉC: ÉRTÉK FEJLÉC: ÉRTÉK FEJLÉC: ÉRTÉK ÜZENETTEST (opcionális)

HTTP válasz példa 19 HTTP/1.1 200 OK Date: Wed, 03 Apr 2013 07:11:56 GMT Server: Apache/2.2.10 (Linux/SUSE) Last-Modified: Wed, 20 Feb 2013 08:39:44 GMT ETag: "fe8438-6d6-4d623e65e9400" Accept-Ranges: bytes Content-Length: 1750 Content-Type: text/html <!DOCTYPE html> <html>... </html>

HTTP válasz státuszsor 20 Státuszkód 1xx: Informatív (kérés megkapva) 2xx: Siker (kérés megérkezett, elfogadva) 200 OK 3xx: Átirányítás (további műveletre van szükség) 4xx: Kliens hiba (kérés hibás, nem teljesíthető) 404 Not found 404 Nem található 5xx: Szerver hiba (nem tudja teljesíteni a kérést) 500 Internal Server Error

HTTP eszközök 21 telnet TCP alapú, kétirányú, általánosan elérhető, nyolcbites byte-alapú kommunikációs protokoll Kérést tudunk vele küldeni tetszőleges TCP portra Böngésző kiegészítők Live HTTP headers HTTPFox > telnet webprogramozas.inf.elte.hu 80 HTTP kérés sorai (beírva, bemásolva) HTTP válasz sorai

22 HTTP eszközök példa

23 HTTP eszközök példa

24 Common Gateway Interface

Common Gateway Interface (CGI) 25 Azt határozza meg, hogy egy webszerver hogyan indíthat el egy programot és milyen módon cserél adatot vele. Indítás: bináris állomány a kért erőforrás Adatok (környezeti változók, standard I/O) Kérés körülményei URL HTTP fejléc HTTP üzenettörzs 1 Szerver HTTP 4 2 CGI 3 Program Kliens

A program eredménye 26 A program eredményének a standard outputon kell megjelennie Ezt továbbítja a webszerver a kliens felé 2 Szerver CGI 3 Program 1 HTTP 4 Kliens

27 CGI példaprogramok

Példa C++ 28 #include <iostream> using namespace std; int main() { cout << "Content-Type: text/html" << endl; cout << endl; cout << "<!doctype html>" << endl; cout << "<html>" << endl; cout << " <head>" << endl; cout << " <meta charset=\"utf-8\">" << endl; cout << " <title></title>" << endl; cout << " </head>" << endl; cout << " <body>" << endl; cout << " <p>hello vilag!</p>" << endl; cout << " </body>" << endl; cout << "</html>" << endl; } return 0;

Példa C++ 29 Egyszerűen futtatva Content-Type: text/html <!doctype html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <p>hello vilag!</p> </body> </html>

Példa C++ 30 Böngészőből futtatva http://localhost/cgi-bin/hello.exe

Példa C++ 31 int main() { cout << "Content-Type: text/html" << endl; cout << endl; cout << "<!doctype html>" << endl; cout << "<html>" << endl; cout << " <head>" << endl; cout << " <meta charset=\"utf-8\">" << endl; cout << " <title></title>" << endl; cout << " </head>" << endl; cout << " <body>" << endl; for (int i = 1; i<=10; i++) { cout << " <p>hello vilag!</p>" << endl; } } cout << " </body>" << endl; cout << "</html>" << endl; return 0;

Példa C++ 32 Content-Type: text/html <!doctype html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <p>hello vilag!</p> <p>hello vilag!</p> <p>hello vilag!</p> <p>hello vilag!</p> <p>hello vilag!</p> <p>hello vilag!</p> <p>hello vilag!</p> <p>hello vilag!</p> <p>hello vilag!</p> <p>hello vilag!</p> </body> </html>

Példa C++ 33 cout << " ifstream f("lista.txt"); while (!f.eof()) { string sor; getline(f, sor); cout << " } f.close(); cout << " <ul>" << endl; <ul>" << endl; <li>" << sor << "</li>" << endl; alma korte szilva

34 PHP nyelvi alapok

PHP 35 PHP Personal Home Page PHP: Hypertext Preprocesszor Jellemzői nyílt forráskódú általános célú szkriptnyelv HTML-be ágyazható

PHP hivatkozások 36 Főoldal http://www.php.net/ Referencia http://www.php.net/manual/en/ függvényreferencia nyelvi referencia kódolási tanácsok telepítés

PHP használata 37 Általános célú szkriptnyelv, nincsen a webhez kötve Szerveroldali dinamikus webprogramozás CGI: cgi-bin mappában Szerver modul: tetszőleges helyen http://szerver/peldak/pelda.php CLI Command Line Interfész PHP szkriptek parancssori futtatása > php pelda.php PHP-GTK Grafikus asztali programok írása

PHP a webprogramozásban 38.php kiterjesztésű állomány kérése esetén webszerver kikeresi az állományt Átadja a PHP értelmezőnek A program kimenetét a böngésző a kliens felé továbbítja 2 Szerver CGI 3 PHP 1 HTTP 4 http://szerver/peldak/pelda.php Kliens

PHP mint programozási nyelv 39 Gyengén típusos változók típusa a benne tárolt értéktől függ automatikus típuskonverziók Értelmezett PHP értelmező Szkriptnyelv Sok minden igaz, amit JavaScriptnél tanultunk szintaxis vezérlési szerkezetek, operátorok viselkedés

További jellemzők 40 Kis- és nagybetű érzékeny Utasításokat pontosvessző zárja le Objektumorientált nyelv (OOP) C alapú szintaxis (ismerős lesz) Nincs főprogram

Megjegyzés 41 <?php //egysoros megjegyzés # Perl szintaktikájú egysoros megjegyzés /* többsoros megjegyzés */?>

Típusok 42 Négy elemi típus logikai egész lebegőpontos szöveg Két összetett típus tömb osztály Speciális típusok erőforrás NULL callbacks

Literálok 43 //Logikai true false TRUE FALSE //Például $l = true; $i = -23; $d = 23.65; //Egész 12 //decimális -34 0123 //oktális 0x0F //hexadecimális 0b0101 //bináris //Lebegőpontos 3.1415 5.6e12-7E-2

Szövegliterál 44 aposztróf macskaköröm heredoc nowdoc Változók behelyettesítése $a = 12; $s1 = 'alma\t{$a} alma'; //alma\t{$a} alma $s1 = 'Több sor is lehet benne'; $s2 = "alma\t{$a} alma"; //alma 12 alma $s2 = "Ez egy több soros szöveg"; $s3 = <<<EOT //behelyettesít Több soros {$a} szöveg EOT; $s4 = <<<'EOT' //nem helyettesít be Ez is lehet {$a} több soros. EOT;

Változók 45 $valtozo Hatókör globális változók függvényen belül lokális változók Szuperglobális változók (ld. függvények) Változó változók $a = 'hello'; $$a = 12; //$hello === 12

Kiírás 46 Ami nincs PHP blokkban, automatikusan kiíródik Kiírás echo var_dump() print_r()

Típusokkal kapcsolatos fontos 47 függvények Típusbeállítás cast (int)$a settype() Típuslekérdezés gettype() is_integer() is_float() is_numeric() is_string() is_bool()

Kiírások, típusműveletek 48 $l = true; $i = -23; $d = 23.65; $s = 'alma'; echo $l; //1 echo $i; //-23 echo $d; //23.65 echo $s; //alma var_dump($l); //bool(true) var_dump($i); //int(-23) var_dump($d); //float(23.65) var_dump($s); //string(4) "alma" //Típuslekérdezés echo gettype($l); //'boolean' echo gettype($i); //'integer' echo gettype($d); //'double' echo gettype($s); //'string' //Típusbeállítás $sd1 = (string)$d; $sd2 = $d; settype($sd2, 'string'); echo gettype($sd1); //'string' echo gettype($sd2); //'string' print_r($l); //1 print_r($i); //-23 print_r($d); //23.65 print_r($s); //alma

Típusokkal kapcsolatos fontos 49 függvények Speciális függvények isset() is_null() empty() Automatikus konverziók http://www.php.net/manual/en/language.types.typejuggling.php Típusok összehasonlítása http://www.php.net/manual/en/types.comparisons.php

Összehasonlítás 50 Expression gettype() empty() is_null() isset() boolean : if($x) $x = ""; string TRUE FALSE TRUE FALSE $x = null NULL TRUE TRUE FALSE FALSE var $x; NULL TRUE TRUE FALSE FALSE $x is undefined NULL TRUE TRUE FALSE FALSE $x = array(); array TRUE FALSE TRUE FALSE $x = false; boolean TRUE FALSE TRUE FALSE $x = true; boolean FALSE FALSE TRUE TRUE $x = 1; integer FALSE FALSE TRUE TRUE $x = 42; integer FALSE FALSE TRUE TRUE $x = 0; integer TRUE FALSE TRUE FALSE $x = -1; integer FALSE FALSE TRUE TRUE $x = "1"; string FALSE FALSE TRUE TRUE $x = "0"; string TRUE FALSE TRUE FALSE $x = "-1"; string FALSE FALSE TRUE TRUE $x = "php"; string FALSE FALSE TRUE TRUE $x = "true"; string FALSE FALSE TRUE TRUE $x = "false"; string FALSE FALSE TRUE TRUE

Összehasonlítás 51 TRUE FALSE 1 0-1 "1" "0" "-1" NULL array() "php" "" TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE 1 TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE 0 FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE TRUE -1 TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE "1" TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE "0" FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE "-1" TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE NULL FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE array() FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE "php" TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE "" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE

Operátorok 52 Ugyanaz, mint JavaScriptben Különbség + kizárólag összeadás szövegösszefűzés:. "piros"."alma"

Vezérlési szerkezetek 53 Ugyanaz, mint C++-ban vagy JavaScriptben Elágazások if if-else switch Ciklusok for foreach (ld. tömbök) while do-while <?php //Különbségek a JavaScripthez képest for ($i = 1; $i <= n; $i++) { utasítások; } foreach ($tomb as $ertek) { utasítások; } foreach ($tomb as $kulcs => $ertek) { utasítások; }?>

Függvények 54 Szintaxisban hasonlít a JavaScriptes függvényekre Változók láthatósága más A globális változók nem látszódnak a függvényeken belül $GLOBALS[] tömb global kulcsszó szuperglobális változók (mindenhol látszódnak) Érték és referencia szerinti paraméterátadás mint C++-ban

Függvények 55 //Függvény általános formája function fvnev($par1, $par2) { utasítások; return visszatérési érték; } //Például function negyzet($x) { return $x * $x; } negyzet(3); // => 9 //Alapértelmezett érték function udvozles($nev = 'Senki bácsi') { return "Hello {$nev}!"; } udvozles(); // => "Hello Senki bácsi!" //Referencia szerinti paraméterátadás $szam = 41; function novel(&$szam) { $szam += 1; } novel($szam); echo $szam; // => 42

Függvények 56 //Globális változók elérése $globus = 'Föld'; function zartfuggveny() { global $globus; echo "Gyönyörű a {$globus}!"; } //vagy function zartfuggveny() { echo "Gyönyörű a {$GLOBALS['globus']}!"; }

57 Összetett adatszerkezetek

Tömb 58 Gyűjtemények általános objektuma Összetett adatszerkezet megvalósítása rekord indexelt tömb asszociatív tömb többdimenziós tömb fa, sor, verem, stb. Asszociatív tömb: kulcs-érték párokból áll kulcs: integer vagy string érték: bármilyen típusú lehet

Tömb 59 //Üres tömb $urestomb = array(); //Indexelt tömb $indtomb = array('alma', 'korte', 'szilva'); echo $indtomb[0]; //'alma' print_r($indtomb); /* Array ( [0] => alma [1] => korte [2] => szilva ) */ //Elemek módosítás $indtomb[1] = 13; $indtomb[1]; //13 //Új elem beszúrása a tömb végére $indtomb[] = 'új'; print_r($indtomb); /* Array ( [0] => alma [1] => 13 [2] => szilva [3] => új ) */ //A tömb hosszának lekérdezése count($indtomb); // => 3 //Elem törlése unset($t[1]);

Asszociatív tömb 61 //Asszociatív tömb $assztomb = array( 'alma' => 'piros', 'korte' => 'sarga', 'szilva' => 'kek', ); echo $assztomb['alma']; //piros print_r($assztomb); /* Array ( [alma] => piros [korte] => sarga [szilva] => kek ) */ //Asszociatív tömb kézzel $assztombkezi = array(); $assztombkezi['alma'] = 'piros'; $assztombkezi['korte'] = 'sarga'; $assztombkezi['szilva'] = 'kek'; print_r($assztombkezi); /* Array ( [alma] => piros [korte] => sarga [szilva] => kek ) */

Mátrix 62 Tömbök tömbje Lehet vegyesen használni indexeltben indexelt indexeltben asszociatív //Mátrix $matrix = array( array(1, 2, 3), array(4, 5, 6), array(7, 8, 9), );

Tömbök bejárása 63 foreach reset(), next(), prev(), current(), key(), each() $gyumolcsok = array( 'alma' 'korte' 'szilva' ); => 'piros', => 'sárga', => 'kék', foreach ($gyumolcsok as $gyumolcs => $szin) { echo "{$szin} {$gyumolcs}\n"; } /* piros alma sárga korte kék szilva */ reset($gyumolcsok); while (list($kulcs, $ertek) = each($gyumolcsok)) { echo "{$ertek} {$kulcs}\n"; }

Tömb, rekord 64 Tömb Rekord $kutyuk = array( 'telefon', 'fülhallgató', 'pendrive', 'e-könyv olvasó', ); $hallgato = array( 'nev' => 'Mosolygó Napsugár', 'neptun' => 'kod123', 'szak' => 'Informatika BSc' );

Rekordok tömbje 65 $hallgatok = array( array( 'nev' => 'Mosolygó Napsugár', 'neptun' => 'kod123', 'szak' => 'Informatika BSc', ), array( 'nev' => 'Kék Ibolya', 'neptun' => 'kod456', 'szak' => 'Informatika BSc', ), );

66 $hallgatok = array( array( 'nev' => 'Mosolygó Napsugár', 'neptun' => 'kod123', 'szak' => 'Informatika BSc', 'targyak' => array( 'Programozás', 'Webfejlesztés 2.', 'Számítógépes alapismeretek', ), ), array( 'nev' => 'Kék Ibolya', 'neptun' => 'kod456', 'szak' => 'Informatika BSc', 'targyak' => array( 'Programozás', 'Webfejlesztés 2.', 'Diszkrét matematika', 'Testnevelés', ), ), );

Összegzés tétel 67 function osszegzes($tomb) { $s = 0; foreach ($tomb as $szam) { $s = $s + $szam; } return $s; } $x = array(1, 3, -2, 8); echo 'Az összeg: '. osszegzes($x);

68 Kimenet generálása

PHP kód elhelyezése 69.php kiterjesztésű fájl <?php és?> tagek közötti részt futtatja a PHP értelmező Ezeken kívüli rész automatikusan kiírásra kerül Több PHP blokk is lehet <?php //PHP kód?> Szöveg <?php //PHP kód?> Szöveg <?php //PHP kód?> Szöveg

Kiírás 70 Nincs PHP tagben echo parancs <p>bekezdés</p> <?php $nev = 'Alma'; echo "<p>{$nev}</p>";?> <p>bekezdés</p>

Összefoglalás 71 Dinamikus szerveroldali webprogramozás HTTP CGI PHP mint nyelv Kimenet generálása