Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

A programozás oktatása WEB-es alkalmazásfejlesztő eszközök segítségével Fábián Zoltán 2006 (az anyag itt elérhető:

Hasonló előadás


Az előadások a következő témára: "A programozás oktatása WEB-es alkalmazásfejlesztő eszközök segítségével Fábián Zoltán 2006 (az anyag itt elérhető:"— Előadás másolata:

1 A programozás oktatása WEB-es alkalmazásfejlesztő eszközök segítségével Fábián Zoltán 2006 (az anyag itt elérhető: )

2 Előzmények 1982 – Commodore Plusz4 – Basic, Assembly Számítástechnika tanítás (C-64 – BASIC), Pascal, Logo, ELAN, CLipper, C, Java, FazztScript nyelvek 1982 – Commodore Plusz4 – Basic, Assembly Számítástechnika tanítás (C-64 – BASIC), Pascal, Logo, ELAN, CLipper, C, Java, FazztScript nyelvek 1992 – Világbanki project, programozás oktatása a Szilyben – Pascal nyelv 1992 – Világbanki project, programozás oktatása a Szilyben – Pascal nyelv 1999 – Ismerkedés a PHP 3-mal, MySql-lel 1999 – Ismerkedés a PHP 3-mal, MySql-lel 2000 – PHP oktatás kezdete a számítástechnikai programozók évfolyamán – szakdolgozatok (PHP+MySQL) 2000 – PHP oktatás kezdete a számítástechnikai programozók évfolyamán – szakdolgozatok (PHP+MySQL)

3 Sok diák jelentkezik informatikára az általános iskola után. Miért? A számítógép játék A számítógép játék A számítógép egy elvarázsolt világ, A számítógép egy elvarázsolt világ, A számítógép „titkai” megtanulhatók A számítógép „titkai” megtanulhatók A családban van informatikus, esetleg programozó A családban van informatikus, esetleg programozó Korábbi elhivatott tanár Korábbi elhivatott tanár Van megfelelő motiváció, de kevés az ismeret Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

4 Az informatikus diákok csekély része lesz programozó. Miért? Hozott képességek. Kell Hozott képességek. Kell algoritmizálási képesség,algoritmizálási képesség, kreativitás,kreativitás, alkalmazni kell tudni a tanultakat,alkalmazni kell tudni a tanultakat, Motiváltság Motiváltság szorgalom – otthoni munkaszorgalom – otthoni munka kitartás – sokáig tart, amíg látványos eredményeket ér el az ember.kitartás – sokáig tart, amíg látványos eredményeket ér el az ember.

5 Az alkotás vágya az alapvető motiváció a programozásra? Mikor marad fent ez a motiváció? Vannak viszonylag gyors sikerek, látványos előrehaladás Vannak viszonylag gyors sikerek, látványos előrehaladás Olyan alkalmazások készítésének a képessége, amelyeket nap, mint nap használ Olyan alkalmazások készítésének a képessége, amelyeket nap, mint nap használ Látványos alkalmazások elkészítésének képessége Látványos alkalmazások elkészítésének képessége

6 Mi a helyzet középiskolában és az OKJ-s szakmákban? Mi info tanárok mindannyian a Pascalon szocializálódtunk! A középszintű Informatika érettséginek nem része a programozás, emelt szinten elegendő a Pascal nyelv ismerete A középszintű Informatika érettséginek nem része a programozás, emelt szinten elegendő a Pascal nyelv ismerete Informatikai alapismeretek érettségihez középszinten és emelt szinten elegendő a Pascal ismerete Informatikai alapismeretek érettségihez középszinten és emelt szinten elegendő a Pascal ismerete OKJ középfokú programozó vizsgát lehet tenni Pascallal (Igaz kellene még egy nyelv, de a pontszám elegendő) OKJ középfokú programozó vizsgát lehet tenni Pascallal (Igaz kellene még egy nyelv, de a pontszám elegendő) A képzési idő nem elég a jó programozási gyakorlat elsajátítására A képzési idő nem elég a jó programozási gyakorlat elsajátítására

7 Ma már a Pascal nem motivál eléggé Nem grafikus – csak Delphi esetén vagy BGI grafikával Nem grafikus – csak Delphi esetén vagy BGI grafikával Nincs képkezelés, gombok, stb... Nincs képkezelés, gombok, stb... Kevés ahhoz, hogy olyan játékot írjon a gyerek, mint amit szokott játszani Kevés ahhoz, hogy olyan játékot írjon a gyerek, mint amit szokott játszani Nincs köze az Internethez Nincs köze az Internethez A számítógép szerepe mára megváltozott, ablak egy kitágult világra A számítógép szerepe mára megváltozott, ablak egy kitágult világra

8 Megoldás Internetes technológiák használata! Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

9 Vannak gyors sikerek! Gyorsan fejleszthető Gyorsan fejleszthető A változók használata a típusok keveredése miatt nem túl szigorú A változók használata a típusok keveredése miatt nem túl szigorú Elágazások, ciklusok használata érthető, világos Elágazások, ciklusok használata érthető, világos

10 Látványos előrehaladás Az alkalmazásokkal egyszerűen HTML és PHP keverésével látványos megoldások érhetők el Az alkalmazásokkal egyszerűen HTML és PHP keverésével látványos megoldások érhetők el

11 Olyan alkalmazások készítésének a képessége, amelyeket nap, mint nap használ Az internet használata során a diákok látják, hogy a site-ok jelentős része php alapú. Az internet használata során a diákok látják, hogy a site-ok jelentős része php alapú. Viszonylag könnyen lehet készíteni alkalmazásokat, amelyek hasonlítanak nagy példaképekre. Viszonylag könnyen lehet készíteni alkalmazásokat, amelyek hasonlítanak nagy példaképekre.

12 Látványos alkalmazások elkészítésének képessége Ha egy diák az Internetről levesz egy-egy ingyenes DHTML megoldást, akkor látványossá teheti az oldalt. Ha egy diák az Internetről levesz egy-egy ingyenes DHTML megoldást, akkor látványossá teheti az oldalt.

13 Milyen rendszer felel meg az oktatás követelményeinek? Lehessen interaktív programot írniLehessen interaktív programot írni Legyenek alapvető struktúrák (szekvencia, iteráció, szelekció)Legyenek alapvető struktúrák (szekvencia, iteráció, szelekció) Függvény, eljárás hívásFüggvény, eljárás hívás Sokféle egyszerű adattípusSokféle egyszerű adattípus Összetett adattípusok: tömbök, rekordokÖsszetett adattípusok: tömbök, rekordok Globális és lokális változókGlobális és lokális változók Paraméterátadás: cím és érték szerint isParaméterátadás: cím és érték szerint is Szövegkezelő függvényekSzövegkezelő függvények FájlkezelésFájlkezelés OOPOOP

14 Java (kliens és szerver oldal is) Java (kliens és szerver oldal is) Javascript (kliens oldal) Javascript (kliens oldal) PHP (szerver oldal) PHP (szerver oldal) Esélyes technológiák Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

15 JAVA Appletekre és kliens alkalmazásokra tökéletesen alkalmasAppletekre és kliens alkalmazásokra tökéletesen alkalmas Adattípusok széles választéka áll rendelkezésreAdattípusok széles választéka áll rendelkezésre Globális, lokális változók használhatókGlobális, lokális változók használhatók Paraméterátadás: cím és érték szerint isParaméterátadás: cím és érték szerint is Függvény és eljárásFüggvény és eljárás Szigorú programszerkezet. csak formai megfelelőség esetén fordul le a programSzigorú programszerkezet. csak formai megfelelőség esetén fordul le a program Fájlkezelés kliens alkalmazások eseténFájlkezelés kliens alkalmazások esetén Grafika, képkezelésGrafika, képkezelés Vezérlési szerkezetek széles választékaVezérlési szerkezetek széles választéka OOPOOP Kezdőnyelvnek nehéz, mert teljesen OOP centrikus!

16 Javascript Majdnem mindenben megfelel Majdnem mindenben megfelel Fájlkezelés nincs a böngészőbenFájlkezelés nincs a böngészőben A tömbök kissé „furcsán” viselkednekA tömbök kissé „furcsán” viselkednek Futási idejű hibaellenőrzés nehézkesFutási idejű hibaellenőrzés nehézkes

17 PHP Mindennek megfelel, kivéve Mindennek megfelel, kivéve Nem túl szigorú a programszerkezet, futási időben történik a hibaellenőrzésNem túl szigorú a programszerkezet, futási időben történik a hibaellenőrzés Nem interaktív –azért ez megoldhatóNem interaktív –azért ez megoldható Szerveroldali (majdnem csak)Szerveroldali (majdnem csak) OOP majdnem teljes a PHP5-benOOP majdnem teljes a PHP5-ben Erősségek Erősségek Sok szövegkezelő függvénySok szövegkezelő függvény Sok fájlkezelő függvénySok fájlkezelő függvény Jó választás

18 Jó-e a PHP kezdőnyelvnek? Az elején egyszerű, természetes, a tanulással együtt lehet összetett alkalmazásokat írni. Az elején egyszerű, természetes, a tanulással együtt lehet összetett alkalmazásokat írni. Alapesetben nem interaktív Alapesetben nem interaktív Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

19 Milyen feltételek kellenek a tanításhoz (ha lehet olcsón)? Hardver Egy mai átlagos PC, lehet kicsit régibb is. Hardver Egy mai átlagos PC, lehet kicsit régibb is. MS Windows 2000, Windows XP vagy Linux op. rendszer, azaz platform független rendszer. MS Windows 2000, Windows XP vagy Linux op. rendszer, azaz platform független rendszer. Az eszközök ingyenesek Jegyzettömb, vagy valami erősebb ASCII editor vagy komolyabb alkalmazásként, PSPad Jegyzettömb, vagy valami erősebb ASCII editor vagy komolyabb alkalmazásként, PSPad Apache és később MySQL Apache és később MySQL Böngésző – IE6 vagy Firefox 1.5+ Böngésző – IE6 vagy Firefox 1.5+

20 Komolyabb eszközök WAMP – Windows Apache MySQL PHP (XAMP, BigApache, Uniserver, stb) WAMP – Windows Apache MySQL PHP (XAMP, BigApache, Uniserver, stb) PHP Eclipse platformfüggetlen IDE – JAVA-ra épül PHP Eclipse platformfüggetlen IDE – JAVA-ra épül Zend IDE – minden ami a fejlesztéshez kell (Editor, Debugger, Profiler) Zend IDE – minden ami a fejlesztéshez kell (Editor, Debugger, Profiler) CodeCharge – későbbi előadás CodeCharge – későbbi előadás

21 Előismeretek Stabil, de egyszerű HTML alapok kellenek Stabil, de egyszerű HTML alapok kellenek A HTML oldal szerkezeteA HTML oldal szerkezete Néhány alapvető tag:Néhány alapvető tag:,,,,,,,,,,,, A formázáshoz szükséges paraméterekA formázáshoz szükséges paraméterek Jó, ha van stíluslap, CSS tudás Jó, ha van stíluslap, CSS tudás A fenti dolgokat megtanítjuk, vagy átvesszük az oktatás előtt Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

22 A kliens-szerver architektúra koncepció lényegét elmagyarázom A kliens-szerver architektúra koncepció lényegét elmagyarázom A fejlesztői gépen a kliens és szerver egy és ugyanaz lehet A fejlesztői gépen a kliens és szerver egy és ugyanaz lehet

23 Első lépések – a PHP kód, és a HTML kód viszonya A PHP program kimenete HTML kód, amit a böngésző értelmez! A PHP program kimenete HTML kód, amit a böngésző értelmez! Sulykolni kell egyszerű kiírást és formázást létrehozó példákon keresztül Sulykolni kell egyszerű kiírást és formázást létrehozó példákon keresztül Ezalatt szintaktikai alapismeretek a PHP- ban. Ezalatt szintaktikai alapismeretek a PHP- ban. Ha második nyelv, akkor jelmondat: Ha második nyelv, akkor jelmondat: Mint a C-ben (majdnem)! Lássunk néhány példát!

24 A majdnem „Hello world!” PHP- ben. Majdnem_Hello_world.php Hello world Hello world Hello world! Ha a PHP fájl csak HTML kódból áll, akkor, mintha nem is lenne PHP. A PHP értelmező beolvassa a fájlt, majd kiküldi a szervernek változatlan formában.

25 A „Hello world!” PHP-ben. helloworld1.php Hello world Hello world A PHP nyitó tagtől a zárótagig az interpreter értelmezi a kódot. A kimenet a webszerverhez kerül.

26 Alternatív kiíró utasítások helloworld2.php Hello world Hello world A print() többször használatos, sőt van a c-hez hasonló printf() is, ugyanolyan formázó stringek használatával. Az egyszerű példákban megjelenítünk HTML tag-eket is a PHP segítségével

27 Változók és típusok bevezetése Ha a változók és adattípusok fogalmát ismerik a diákok, akkor átismételjük a PHP-ben lévőket. Ha a változók és adattípusok fogalmát ismerik a diákok, akkor átismételjük a PHP-ben lévőket. Ha nem ismerik azokat, akkor bevezetjük az egyszerű típusokat. Ha nem ismerik azokat, akkor bevezetjük az egyszerű típusokat. A String típus hová soroljuk? Szerintem az egyszerűek közé.A String típus hová soroljuk? Szerintem az egyszerűek közé. Változók használatának szintaktikai szabályai Változók használatának szintaktikai szabályai A középiskolás korosztály esetén célszerű a példákon keresztül megközelíteni a programozás tanulását, és így eljutni az elméletig. A középiskolás korosztály esetén célszerű a példákon keresztül megközelíteni a programozás tanulását, és így eljutni az elméletig.

28 A PHP típusos nyelv, de … A változó neve mindig $ jellel kezdődik. A név kis és nagybetű érzékeny! A változó neve mindig $ jellel kezdődik. A név kis és nagybetű érzékeny! A változó típusa értékadáskor dől el. Pl.: A változó típusa értékadáskor dől el. Pl.: $s= ”Szia, ez egy string”; // string $d= 123; // egész szám $f= ; // float $b= true; // logikai típus $t= array(); // Tömb típus $fp= fopen(”C:/valami.txt”,”r”); // erőforrás típus $o= new semmi();// osztályokról később Gyakori az automatikus típuskonverzió: Echo $s. ” : ”. $d; // Stringre konvertál minden kiírandót //. A stringek összefűzésére használt jel //. A stringek összefűzésére használt jel

29 Operátorok használata Stringek összefűzése Stringek összefűzése Matematikai alapműveletek Matematikai alapműveletek

30 Szelekció Az elején nem törekszünk minden vezérlési szerkezet megismertetésére Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

31 Szelekció 2. if( feltétel){ utasíás1;Utasítás2;}elseif(feltétel){alternatív_utasítás1;alternatív_utasítás2;}else{alternatív_2utasítás1;alternatív_2utasítás2;} Switch(ertek){ case kons1 : case kons1 : utasítás; utasítás; break; break; case konst2 : case konst2 : ……. ……. default default utasítás; utasítás;} Persze a többi szerkezetet is megtanítjuk később

32 Konstansok, default értékek Konstans definiálása Konstans definiálása Define(”KNEV”, érték); Ha nem tudom, hogy korábban már definiáltam-e egy konstanst, akkor adok neki egy default értéket Ha nem tudom, hogy korábban már definiáltam-e egy konstanst, akkor adok neki egy default értéket if( !defined(”KNEV”) ) define(”KNEV”, ”default érték”); Ha nem tudom, hogy egy változó már létezik-e, azt is megvizsgálhatom és adhatok neki default értéket. Ha nem tudom, hogy egy változó már létezik-e, azt is megvizsgálhatom és adhatok neki default értéket. if(!isset($a) ) $a = 1112; // default érték; Ha tudni akarom hogy létezik-e a változó vagy az értéke... if (!isset($a) || ( $a == 0 ) ) $a = 1;

33 Iteráció Mintapélda a ciklus használatának bemutatására Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

34 Iteráció Mintapélda ciklusok alkalmazására: $i = 0; $x = 0; while( $x> 80 && $i 80 && $i < 100 ){ (1,100) $x = rand (1,100) print($i.” : ”.$x); $i++;}$i = 0 do{ echo $i; } while ($i > 0); Ezekre a ciklusokra a tanulás során a programozási tételeknél lesz szükség

35 Tömbök Bevezetem a tömböket, mint egyszerű adatok sorozatát. Index, tömbelem van stb... Csak egy dimenziós tömbök Példák a for ciklus és a tömbök együttműködésére... itt most nem részletezem Példák a for ciklus és a tömbök együttműködésére... itt most nem részletezem Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

36 Iteráció II. A foreach speciális ciklus, később van jelentősége $t = array("Pista", "géza"); foreach($t AS $i => $e){ print("index: "); print("index: "); print($i); print($i); print(", Érték: "); print(", Érték: "); print($e); print($e); print(" "); print(" ");} A futás eredménye: Index: 0, Érték: Pista Index: 1, Érték: géza

37 Eljárások, függvények Hol deklarálhatom, és mikor érhetem el. Hol deklarálhatom, és mikor érhetem el. Paraméterátadás (Érték szerinti, default érték, cím szerint) Paraméterátadás (Érték szerinti, default érték, cím szerint) Eljárás a PHP-ban paraméterekkel Eljárás a PHP-ban paraméterekkel function procnev($a, $b = 123){ echo $a. $b; } Függvény átadott paraméterekkel Függvény átadott paraméterekkel function fnev($a){ $a = $a +2; $a = $a +2; return $a; return $a;} Eljárás cím szerinti paraméterátadással Eljárás cím szerinti paraméterátadással function fnev ( &$a ){ $a = $a *2; } Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

38 Változók hatásköre és globalitása A php oldalon létrejövő változók globálisak A php oldalon létrejövő változók globálisak A függvények/eljárásokon belül deklarált minden változó lokális. A függvények/eljárásokon belül deklarált minden változó lokális. Ha a globális névtérből importálhatok változókat Ha a globális névtérből importálhatok változókat Léteznek szuperglobális változók, amelyek a PHP kód minden részérő elérhetők. Léteznek szuperglobális változók, amelyek a PHP kód minden részérő elérhetők. Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

39 Nézzünk egy példát

40 Egy kis kitérő - GET metódus Ha egy HTML oldalon van egy link, és arra kattintasz, akkor paramétert adsz át a következő PHP oldalnak: Ha egy HTML oldalon van egy link, és arra kattintasz, akkor paramétert adsz át a következő PHP oldalnak: Ez itt a link Ez itt a link Ez a paraméterátadás GET metódussal zajlik. A meghívott oldalon automatikusan létrejön az alábbi változó: $_GET[”sz”] és értéke 123 lesz! getpelda.php Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

41 POST metódus bevezetése - interaktivitás A HTML oldalon lévő űrlap elküldi az adatokat egy másik oldalnak POST metódussal. Index.html A meghívott oldalon létrejön automatikusan a $_POST tömb és azt feldolgozzuk postpelda.php $e){ foreach( $_POST AS $i => $e){ echo ”index: ”. $i. ”, Érték: ”. $e. ” ”; echo ”index: ”. $i. ”, Érték: ”. $e. ” ”; }?> Önmagukat meghívó oldalakat alkalmazhatunk!

42 Asszociatív tömbök, típusok keveredése A tömbelemeket tetszőleges típusú értékekkel indexelhetem. A tömbelemeket tetszőleges típusú értékekkel indexelhetem. A tömb elemeinek indexét tetszőlegesen keverhetem. A tömb elemeinek indexét tetszőlegesen keverhetem. A tömbökben tárolt adatok típusa keveredhet! A tömbökben tárolt adatok típusa keveredhet! $a[”gj”] = 123; $a[1] = ”Ez fura”; A tömbökben tárolhatok tömböket A tömbökben tárolhatok tömböket A tömbök mérete dinamikusan változhat. A tömbök mérete dinamikusan változhat. $b = array(”Hi”, 1, true, array(11, 22) ); $b[4] = ”Ez is bekerül!”; A foreach ciklust igazából arra lehet jól használni, hogy feldolgozzunk asszociatív tömböket! A foreach ciklust igazából arra lehet jól használni, hogy feldolgozzunk asszociatív tömböket! Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

43 Szövegkezelés A bőség zavara (97 függvény) A bőség zavara (97 függvény) A fontosabbak: A fontosabbak:substr(),str_replace(),strlen(),pos(),strpos() reguláris kifejezések... Mintafeladatok: Mintafeladatok: Állapítsa meg, hogy egy szövegben szerepel-e egy adott karakter, és ha igen, akkor hol szerepel?Állapítsa meg, hogy egy szövegben szerepel-e egy adott karakter, és ha igen, akkor hol szerepel? Cserélje ki egy szövegben előforduló minden címben jelet #-raCserélje ki egy szövegben előforduló minden címben jelet #-ra Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

44 Fájlkezelés Fájlok kezelése C szintaktika szerint, Fájlok kezelése C szintaktika szerint, fopen(),fclose(), feof(),fgets(), fgetc()fopen(),fclose(), feof(),fgets(), fgetc() fseek(), fwrite()fseek(), fwrite() Fájlok ahogy én szeretem Fájlok ahogy én szeretem $str = file_get_contents(”file.txt”)$str = file_get_contents(”file.txt”) file_put_contents(”file.txt”,$str)file_put_contents(”file.txt”,$str) File() => arrayFile() => array Fájlrendszer műveletek Fájlrendszer műveletek is_file(), is_dir(), file_exists(), dir()is_file(), is_dir(), file_exists(), dir() dirname(), pathinfo()dirname(), pathinfo() WEB-es fájlműveletek, relatív címzés sulykolása, WEB-es fájlműveletek, relatív címzés sulykolása, $_SERVER["DOCUMENT_ROOT"]$_SERVER["DOCUMENT_ROOT"] $_SERVER[”PHP_SELF"]$_SERVER[”PHP_SELF"] __FILE__ __FILE__ Tartalom Motiváció Irány az internet Eszközválasztás Jó-e a PHP PHP oktatási tematika Első lépések Szelekció Iteráció Tömbök Eljárás, Függ. Változók GET, POST Assz. tömbök Szövegkezelés Fájlkezelés Folytatás

45 Fájlkezelés mintafeladatok Készíts programot, amely a szerveren elmenti minden letöltő IP címét, és a böngészőjének típusát, majd készíts programot, amely kiértékeli a látogatottsági adatokat Készíts programot, amely a szerveren elmenti minden letöltő IP címét, és a böngészőjének típusát, majd készíts programot, amely kiértékeli a látogatottsági adatokat Készítsd el egy könyvtárban lévő fájlok listáját! Jelenítsd meg a fájlok méretét is! Készítsd el egy könyvtárban lévő fájlok listáját! Jelenítsd meg a fájlok méretét is! Készítsd el egy könyvtárban lévő fájlok listáját úgy hogy a fájlokat az internetről le lehessen tölteni. A fájl típusának megfelelő ikonok jelenjenek meg a fájl neve mellett! Készítsd el egy könyvtárban lévő fájlok listáját úgy hogy a fájlokat az internetről le lehessen tölteni. A fájl típusának megfelelő ikonok jelenjenek meg a fájl neve mellett! Egy speciálisan formázott szövegfájlban tároljuk a könyvtárban lévő fényképek leírásait. Írj programot, amely kiírja a képeket egy weboldalra és hozzájuk fűzi a szövegeket. Egy speciálisan formázott szövegfájlban tároljuk a könyvtárban lévő fényképek leírásait. Írj programot, amely kiírja a képeket egy weboldalra és hozzájuk fűzi a szövegeket. Készíts programot, amellyel rekurzívan be lehet járni a szerver könyvtárstruktúráját Készíts programot, amellyel rekurzívan be lehet járni a szerver könyvtárstruktúráját

46 Fájlok includolása Miért kell – újrafelhasználható kód, struktúrált programozás Miért kell – újrafelhasználható kód, struktúrált programozás include(), include_once()include(), include_once() require(), require_once()require(), require_once()

47 A szuperglobális tömbök $_GET – A GET metódussal átadott paraméterek tömbje $_POST – a POST-tal átadott paraméterek tömbje $_COOKIE – a php oldal meghívásakor a böngészőktől érkező cookie-k tömbje $_SESSION – a munkamenet azonosítók tömbje (később) $_SERVER – a webszerver környezeti paramétereit tároló tömb $_ENV – az operációs rendszer környezeti változóit tároló tömb $_FILES – A html űrlapról feltöltött file adatait tároló tömb $_REQUEST – A böngésző által elküldött kérés paramétereit tartalmazó tömb $GLOBALS – ebben minden benne van Ez a téma átvezet a következő év anyagára.

48 Egy nagyon sűrű tanév vége Körülbelül idáig juthatnak el egy tanév alatt a diákok egy tanév alatt heti 3-4 órában tanulva a programozást a semmiről Körülbelül idáig juthatnak el egy tanév alatt a diákok egy tanév alatt heti 3-4 órában tanulva a programozást a semmiről A tanév alatt természetesen algoritmusokat írunk, amikor csak lehet A tanév alatt természetesen algoritmusokat írunk, amikor csak lehet Programozási tételek szerepelnek azután, miután a ciklusok, eljárások és függvények már ismertek Programozási tételek szerepelnek azután, miután a ciklusok, eljárások és függvények már ismertek Otthoni munka fontos. Ma már a diákok jelentős részének van otthon számítógépe – lehet HF-et adni nekik. Akinek nincsen, az iskolában kaphat gépidőt. Otthoni munka fontos. Ma már a diákok jelentős részének van otthon számítógépe – lehet HF-et adni nekik. Akinek nincsen, az iskolában kaphat gépidőt.

49 Folytatás – a második év Programok tervezésének ismerete - Programok tervezésének ismerete - A tanévben adatbázisokkal kapcsolatos ismeretek A tanévben adatbázisokkal kapcsolatos ismeretek OOP programozás, és azok alkalmazása OOP programozás, és azok alkalmazása Modern programozási módszertan Modern programozási módszertan Kliens oldali megoldások (CSS, DOM, Javascript, Java, XML, AJAX) Kliens oldali megoldások (CSS, DOM, Javascript, Java, XML, AJAX)

50 Köszönöm figyelmüket! Várom kérdéseiket?

51 Adatbázisok kezelése? 1. „Fapados” módszer A program kapcsolódik az adatbázishoz A program kapcsolódik az adatbázishoz Kiválasztja a célzott adatbázist Kiválasztja a célzott adatbázist Elküld egy SQL lekérdezést az adatbázisra vonatkozólag az adatbázis szervernek Elküld egy SQL lekérdezést az adatbázisra vonatkozólag az adatbázis szervernek Az eredmény rekordszetet feldolgozza Az eredmény rekordszetet feldolgozza Kiírja az eredményt. Kiírja az eredményt. Nézzük: Nézzük:

52 Kapcsolat létrehozása A lefutás után a kapcsolat megszakad a PHP és az adatbázis szerver között. A kapcsolat felépítése a leglassabb az adatbázis műveletek között. A lefutás után a kapcsolat megszakad a PHP és az adatbázis szerver között. A kapcsolat felépítése a leglassabb az adatbázis műveletek között. Perzisztens kapcsolat időtakarékosabb, mert meglévő kapcsolatot használ az új kapcsolat helyett: mysql_connect() helyett mysql_pconnect(). Perzisztens kapcsolat időtakarékosabb, mert meglévő kapcsolatot használ az új kapcsolat helyett: mysql_connect() helyett mysql_pconnect(). A $kapcsolat változó típusa erőforrás típus (valójában a megadott memória területre mutató pointer) A $kapcsolat változó típusa erőforrás típus (valójában a megadott memória területre mutató pointer) A mysql kapcsolat hibáját le lehet kezelni: mysql_error(); A mysql kapcsolat hibáját le lehet kezelni: mysql_error(); A kapcsolatot le is lehet zárni: mysql_close(). az oldal lefutásakor a kapcsolat lezárul A kapcsolatot le is lehet zárni: mysql_close(). az oldal lefutásakor a kapcsolat lezárul

53 Az adatbázis kiválasztása Le lehet kérdezni az adatbázisok listáját is. És még sok egyéb adatbázis-kezelő függvény van a PHP-ben, de erre most nem térek ki. Le lehet kérdezni az adatbázisok listáját is. És még sok egyéb adatbázis-kezelő függvény van a PHP-ben, de erre most nem térek ki.

54 SQL Lekérdezés elküldése A lekérdezés eredménye egy rekordszet, amit fel kell dolgoznunk ciklussal, vagy egyéb módon.

55 Az eredmény feldolgozása és kiírása táblázatban egy html oldalra A mysql_fetch_array() egy rekord adatait beteszi egy asszociatív tömbbe. A mysql_fetch_array() egy rekord adatait beteszi egy asszociatív tömbbe. A while ciklussal addig olvassuk a rekordszet eredménysorokat, amíg vannak még rekordok. Ha nincs több rekord, akkor a $sor értéke false és vége a ciklusnak. A while ciklussal addig olvassuk a rekordszet eredménysorokat, amíg vannak még rekordok. Ha nincs több rekord, akkor a $sor értéke false és vége a ciklusnak.

56 Adatok módosítása egy adatbázisban - Törlés Egy oldalon rábökünk egy linkre vagy egy nyomógombra, ami meghív egy másik oldalt, ahol a megfelelő SQL utasítás lefut végrehajtja a szerver. Egy oldalon rábökünk egy linkre vagy egy nyomógombra, ami meghív egy másik oldalt, ahol a megfelelő SQL utasítás lefut végrehajtja a szerver. Törlés Törlés Torol.php A kódot javíthatjuk a korábbiakban tanult isset() fv. segítségével.

57 Módosítás, Új sor beszúrása, ugyanezen az elven, de nagyon macerás… egyszerűbben lehet-e? Minden oldalon ugyanazokat a műveleteket kell elvégezni (kapcsolódás, adatbázis választás, stb…) => valami include kellene Minden oldalon ugyanazokat a műveleteket kell elvégezni (kapcsolódás, adatbázis választás, stb…) => valami include kellene A kapcsolódásért felelős programrészleteket minden oldalon beincludoljuk a programba, A kapcsolódásért felelős programrészleteket minden oldalon beincludoljuk a programba, Más library jellegű eljárásokat és függvényeket is készíthetünk, betesszük őket az include fájlba és a megfelelő oldalon beincludoljuk. Más library jellegű eljárásokat és függvényeket is készíthetünk, betesszük őket az include fájlba és a megfelelő oldalon beincludoljuk.

58 Még mindig sokat kell dolgozni! Készítsünk olyan előre gyártott függvényt, amely a gyakori műveleteket (lekérdezés, beszúrás, módosítás, törlés) eljárás formájában hajtja vége, megfelelő paraméterek átvételével Készítsünk olyan előre gyártott függvényt, amely a gyakori műveleteket (lekérdezés, beszúrás, módosítás, törlés) eljárás formájában hajtja vége, megfelelő paraméterek átvételével A lekérdezés eredményét a függvény eleve tömb formájában adja vissza. A lekérdezés eredményét a függvény eleve tömb formájában adja vissza. Később mutatok ilyet... Később mutatok ilyet...

59 Adatbázis függetlenség A különböző adatbázis-kezelőkhöz nem pontosan ugyanazok a függvények tartoznak A különböző adatbázis-kezelőkhöz nem pontosan ugyanazok a függvények tartoznak Kell egy adatbázis-absztrakció, amely eltakarja az adatbázis-kezelők közti különbséget Kell egy adatbázis-absztrakció, amely eltakarja az adatbázis-kezelők közti különbséget Létező lehetőségek: Létező lehetőségek: PEAR – A PHP-hez fejlesztett hivatalos programcsomag – nagy falat, de sok mindent tudPEAR – A PHP-hez fejlesztett hivatalos programcsomag – nagy falat, de sok mindent tud ADODB Library – adatbázis absztrakciós felület, viszonlyag egyszerűbben el lehet sajátítaniADODB Library – adatbázis absztrakciós felület, viszonlyag egyszerűbben el lehet sajátítani PHP 5.1.x – PDO, Új hivatalos adatbázis absztrakciós réteg.PHP 5.1.x – PDO, Új hivatalos adatbázis absztrakciós réteg. Hogyan működnek ezek?

60 Az adatbázis absztrakciós rétegek működése A mi PHP kódunk adatbázis típus, kapcs. Id, SQL ↓ ↑ A lekérdezés eredménye Absztrakciós réteg (pl. ADODB, PDO, PERL) ↓↑↓↑↓↑↓↑ Php_MYSQL driver Php_ODBC driver Php_MSSQL driver Php_Oracle driver MySql szerver Tetszőleges ODBC driver Microsoft SQL szerver Oracle szerver

61 OOP alapú adatbázis kezelés A PHP kód az absztrakt osztályok metódusait hívja A metódusok paraméterei ↓ A metódusok visszaadott eredményei ↑ Az adatbázisunk tábláinak struktúrája ~ hasonlít az osztálystruktúrára adatbázis típus, kapcs. Id, SQL ↓ ↑ A lekérdezés eredménye Absztrakciós réteg (pl. ADODB, PDO, PERL) ↓↑↓↑↓↑↓↑ Php_MYSQL driver Php_ODBC driver Php_MSSQL driver Php_Oracle driver Mysql szerver Tetszőleges ODBC driver Microsoft SQL szerver Oracle szerver Később ilyet láthatunk, tervezést igényel

62 Alkalmazásfejlesztés Model-View-Controler elképzelés Az alkalmazások további rétegezése Az alkalmazások további rétegezése Model => az adatbázis modell, eddig erről volt szó Model => az adatbázis modell, eddig erről volt szó View => Az adatbázis adatainak megjelenítését vezérli – az adatbázis absztrakcióra építjük. Kellhet hozzá kliens oldali komponens is. View => Az adatbázis adatainak megjelenítését vezérli – az adatbázis absztrakcióra építjük. Kellhet hozzá kliens oldali komponens is. (Javascript, Flash - ActionScript, Java, CSS)(Javascript, Flash - ActionScript, Java, CSS) Controller => A felhasználó tevékenységére hogyan reagáljon a felület – eseménykezelés a böngészőben Controller => A felhasználó tevékenységére hogyan reagáljon a felület – eseménykezelés a böngészőben Kliens oldali megoldások kellenek (Javascript, CSS, ActionScript, Java Applet, AJAX, stb…)Kliens oldali megoldások kellenek (Javascript, CSS, ActionScript, Java Applet, AJAX, stb…)

63 Azonosítás, beléptetés, session A user a HTML űrlapon beírja a usernév, password párost A user a HTML űrlapon beírja a usernév, password párost Elküldi a szervernek az adatokat, amit az oldal ellenőriz az adatbázis alapján Elküldi a szervernek az adatokat, amit az oldal ellenőriz az adatbázis alapján Később már csak a belépettség állapotát ellenőrizzük. Később már csak a belépettség állapotát ellenőrizzük. Mielőtt ezt megnéznénk egy keveset halljunk a http protokollról Mielőtt ezt megnéznénk egy keveset halljunk a http protokollról

64 HTTP protokoll gyorstalpaló – Cookie-k GET vagy POST kéréskor először a kérés headerei mennek a szerverhez. GET vagy POST kéréskor először a kérés headerei mennek a szerverhez. A headerek közül az egyik legfontosabb a Cookie. A headerek közül az egyik legfontosabb a Cookie. A cookie a böngészőn tárolt max. 4 kb-nyi adat. A Netscape vezette be. A cookie-kat a látogató azonosításra, számlálásra használják, stb... A cookie a böngészőn tárolt max. 4 kb-nyi adat. A Netscape vezette be. A cookie-kat a látogató azonosításra, számlálásra használják, stb... A cookie-t a web szerver elküldi a PHP-nak, amit azzal fel lehet dolgozni. A cookie-t a web szerver elküldi a PHP-nak, amit azzal fel lehet dolgozni. A PHP oldal a először a válasz header-eit küldi el, amihez a webszerver hozzáteszi a magáét A PHP oldal a először a válasz header-eit küldi el, amihez a webszerver hozzáteszi a magáét A PHP oldal a HTML tartalmat csak ezután küldheti ki a szervernek A PHP oldal a HTML tartalmat csak ezután küldheti ki a szervernek

65 Cookie kezelés példa – hányszor látogatta az oldalt Cookieteszt "> "> Belépések száma: Belépések száma:

66 Session-ök kezelése 1. A kliens oldalon tilos éles információt tárolni - > a szerveren kell olyan helyen, amit a PHP tud olvasni, de a webről nem elérhető A kliens oldalon tilos éles információt tárolni - > a szerveren kell olyan helyen, amit a PHP tud olvasni, de a webről nem elérhető A session olyan fájl, amiben a PHP oldalak adatokat tárolhatnak. Ezek a többi oldalon is elérhetők (globális értékek) A session olyan fájl, amiben a PHP oldalak adatokat tárolhatnak. Ezek a többi oldalon is elérhetők (globális értékek) A tárolás módja: az adatok serializációja (Az értékeket átalakítjuk speciális stringgé, $str = serialize($tomb) és vissza $tomb = unserialize($_SESSION[”tomb”])) pl.: A tárolás módja: az adatok serializációja (Az értékeket átalakítjuk speciális stringgé, $str = serialize($tomb) és vissza $tomb = unserialize($_SESSION[”tomb”])) pl.:col|a:4:{i:0;a:3:{s:5:"order";i:10;s:4:"view";s:1:"1";s:5:"width";i:0;}i:1;a:3:{s:5:"order";i:9;s:4:"view";s:1:"1";s:5:"width";i:10;}i:2;a:3:{s:5:"order";i:8;s:4:"view";s:1:"1";s:5:"width";i:20;}i:3;a:3:{s:5:"order";i:7;s:4:"view";s:1:"1";s:5:"width";i:30;}i:4;a:3:{s:5:"order";i:6;s:4:"view";s:1:"1";s:5:"width";i:40;}} A session véletlenszerű nevet kap, valami ilyet és ilyen nevű fájlba kerülnek az adatok. pl.: sess_ade7acbe988ecddbfbed16166ded0e54 A fájlnevet cookieban elküldi a szerver a böngészőnek. A cookie lejárata azonnali, tehát ha a user kilép a böngészőből a cookie érvénytelenné válik – így a kliens oldalra kerülő információ segítségével sem lehet hozzájutni a sessionben tárolt adatokhoz. A fájlnevet cookieban elküldi a szerver a böngészőnek. A cookie lejárata azonnali, tehát ha a user kilép a böngészőből a cookie érvénytelenné válik – így a kliens oldalra kerülő információ segítségével sem lehet hozzájutni a sessionben tárolt adatokhoz.

67 Session kezelés 2. session.php Kattints ide Kattints ide A session megnyitása előtt semmiféle html tartalom nem kerülhet a kimenetre, mivel a session-cookie is header adat, aminek a html tartalom előtt kell kikerülnie. A session megnyitása előtt semmiféle html tartalom nem kerülhet a kimenetre, mivel a session-cookie is header adat, aminek a html tartalom előtt kell kikerülnie. Ha nem zárjuk le az oldalon a session-t, akkor a rendszer automatikusan lezárja, mihelyt lefutott a script Ha nem zárjuk le az oldalon a session-t, akkor a rendszer automatikusan lezárja, mihelyt lefutott a script A lezárás után a $_SESSION[] tartalmát már nem lehet cookie-ba írni. A lezárás után a $_SESSION[] tartalmát már nem lehet cookie-ba írni.

68 Beléptető rendszer nincs ilyen user és jelszó // ha 1, akkor van // ha 1, akkor van $num = mysql_numrows($result); if($num>0){//Ide kell betenni a jelszóellenőrzést $_SESSION["logged_in"] = True;//vagy sima text vagy mysql lekérdezés stb... }} } If (!($_SESSION["logged_in"])){//Authentikálás a szevrer segítségével If (!($_SESSION["logged_in"])){//Authentikálás a szevrer segítségével header('WWW-Authenticate: Basic realm="Beléptetés!"'); header('HTTP/ Unauthorized'); exit; }?> A rendszer csak a beléptetés tényét tárolja, de sem a usernevet, sem a jelszót nem szabad biztonsági okokból a sessionben tárolni.

69 ek küldése (kicsit hosszú a kód) Lehetne fapadosan is, de miért ne tegyük elegánsabban, pl. adatbázisból véve a címeket? include("phpMailer/class.phpmailer.php"); include("phpMailer/class.phpmailer.php"); set_time_limit(20*60); set_time_limit(20*60); $maxmail = 220; $maxmail = 220; $con = mysql_connect('localhost','fz',‘jelszo') or die("Nincs kapcsoalt az adatbázissal"); $con = mysql_connect('localhost','fz',‘jelszo') or die("Nincs kapcsoalt az adatbázissal"); if(!mysql_select_db("roadshow",$con)) die("Nem sikerült az adatbázishoz csatlakozni"); if(!mysql_select_db("roadshow",$con)) die("Nem sikerült az adatbázishoz csatlakozni"); $sql = "SELECT id, mail, Name, elment, ismeros, nomail FROM mailcimek WHERE mail NOT IN (SELECT FROM kizarva) ORDER BY mail"; $sql = "SELECT id, mail, Name, elment, ismeros, nomail FROM mailcimek WHERE mail NOT IN (SELECT FROM kizarva) ORDER BY mail"; $arr = array(); $arr = array(); $rs = mysql_query($sql); $rs = mysql_query($sql); $i = 0; $i = 0; while($sor = mysql_fetch_assoc($rs)){ while($sor = mysql_fetch_assoc($rs)){ if(!$sor['elment']){ if(!$sor['elment']){ $arr[$i] = $sor; $arr[$i] = $sor; $i++; $i++; } } // levelek küldése // levelek küldése $Logfilename = "./webkonferencia.log"; $Logfilename = "./webkonferencia.log"; $log = file_get_contents($Logfilename); $log = file_get_contents($Logfilename); for($j = 0;$jIsSMTP(); // set mailer to use SMTP $mail->Hostname = "www.szily.hu"; // SMPT szerver címe $mail->Host = " "; // SMPT szerver címe $mail->IsHTML(true); // set format to HTML $mail->SMTPAuth = false; // turn on SMTP authentication $mail->From = // Küldő cime $mail->FromName = "Fábián Zoltán"; // Én vagyok $mail->AddAddress($arr[$j]['mail']); //Cím hozzáadása $mail->Subject = "Web Konferencia Szily Kálmán RoadShow 2006"; $mail->Body = file_get_contents("level_ism.html"); $mail->AltBody = file_get_contents("level_ism.txt"); if($mail->Send()){ $logmail.= " - levellkuldes sikeres volt\n"; $logmail.= " - levellkuldes sikeres volt\n"; $sqlupdate = "UPDATE mailcimek SET elment = 1 WHERE id = ".$arr[$j]["id"]." "; $sqlupdate = "UPDATE mailcimek SET elment = 1 WHERE id = ".$arr[$j]["id"]." "; $db=mysql_query($sqlupdate); $db=mysql_query($sqlupdate);}else{ $logmail.= " - levélküldés nem sikerült\n"; $logmail.= " - levélküldés nem sikerült\n";}print($logmail); $log.= $logmail; file_put_contents($Logfilename,$log); }

70 MVC – sablon rendszer használata - Smarty Válasszuk szét a programozót és a designert! Válasszuk szét a programozót és a designert! design színek, képek, stílusok, azaz html tartalom.design színek, képek, stílusok, azaz html tartalom. Program – tartalomProgram – tartalom A két fél lehetőleg ne avatkozzon egymás dolgaiba, de kell kapcsolódási felület => sablon A két fél lehetőleg ne avatkozzon egymás dolgaiba, de kell kapcsolódási felület => sablon A sablon olyan fájl, ami HTML kódot tartalmaz + a tartalom beszúrásához jelölőket. A sablon olyan fájl, ami HTML kódot tartalmaz + a tartalom beszúrásához jelölőket. A jelölő legyen például {$valtozonev} A jelölő legyen például {$valtozonev} A jelölő lehet más is... A jelölő lehet más is...

71 Smarty 2 – egy portál csontváza CMS rendszer - skeleton CMS rendszer - skeleton

{$fejlec} {$fejlec}
{$menu}{$tartalom}

72 Smarty3 – a csontváz motorja, a PHP kód template_dir= SMARTY_ROOT."templates_c/"; // Smarty szükséges könyvtárai $smarty->compile_dir= SMARTY_ROOT."templates_c/"; $smarty->config_dir = SMARTY_ROOT."templates_c/"; $smarty->cache_dir= SMARTY_ROOT."templates_c/"; // $fejlec = "Fejléc tartalma"; $menu = " Elso \n"; $menu.= " Kettes \n"; $menu.= " Harmas \n"; $menu.= " Négyes \n"; $x = isset($_GET["x"]) ? $_GET["x"] :""; if(!empty($x)){ $tartalom = " ”; $tartalom = " ”; $tartalom.= „Ez függ a menüben átadott paramétertől: ".$x." "; $tartalom.= „Ez függ a menüben átadott paramétertől: ".$x." ";}else{ $tartalom = "Ez itt a tartalom"; $tartalom = "Ez itt a tartalom";}// $smarty->assign("fejlec",$fejlec);$smarty->assign("menu",$menu);$smarty->assign("tartalom",$tartalom);$smarty->display(”./cms.tpl");?>

73 Fájlok feltöltése Feltolt.html Fájlnév Fájlnév feltolt.php A példában egy fájlt töltünk fel, de tetszőleges számút is lehet megfelelő módon. A fájlfeltöltésnél vigyázni kel arra, hogy a feltöltött fájlt ne lehessen elérni közvetlenül a webszerverről, illetve szűrni kell, hogy milyen típusú fájlokat lehessen feltölteni.

74 Előre definiált library-k - PEAR Előre definiált osztályok százai, a PHP által hivatalosan támogatott. Előre definiált osztályok százai, a PHP által hivatalosan támogatott. Minőségbiztosított kód! Minőségbiztosított kód! Egyszerű példa – konfigurációs fájl egy alkalmazáshoz Egyszerű példa – konfigurációs fájl egy alkalmazáshozcreateSection('DB'); $conf_DB =& $conf->createSection('DB'); $conf_DB->createDirective('type', 'mysql'); $conf_DB->createDirective('type', 'mysql'); $conf_DB->createDirective('host', 'localhost'); $conf_DB->createDirective('host', 'localhost'); $conf_DB->createDirective('user', 'root'); $conf_DB->createDirective('user', 'root'); $conf_DB->createDirective('pass', 'root'); $conf_DB->createDirective('pass', 'root'); $config = new Config(); $config = new Config(); $config->setRoot($conf); // write the container to a php array $config->setRoot($conf); // write the container to a php array $config->writeConfig('/tmp/config_test.php', $config->writeConfig('/tmp/config_test.php', 'phparray', 'phparray', array('name' => 'test') array('name' => 'test') ); ); echo $conf->toString('phparray', array('name' => 'test')); echo $conf->toString('phparray', array('name' => 'test'));?> A Pear csomag minden tagja automatikusan beincludolja azokat a pear fájlokat, amelyek szükségesek az osztály működéséhez! A programozónak az include-dal nem kell törődnie

75 Szabad forrású PHP alapú osztályok gyűjteménye. Szabad forrású PHP alapú osztályok gyűjteménye. Nincs az osztályok között összefüggés, Nincs az osztályok között összefüggés, A kódot nem ellenőrzi senki minőség szempontjából A kódot nem ellenőrzi senki minőség szempontjából

76 Framework-ök használata Prototype.js (alap!) Prototype.js (alap!) Dojo Dojo Jquery Jquery Kissé nehézkes az áttekintésük, mert javascript, AJAX és PHP technológia keveredik bennük.

77 CMS rendszerek Lásd Drupal, Moodle, Joomla Lásd Drupal, Moodle, Joomla

78 Codecharge Studio Kódgenerátor, komplex fejlesztőrendszer Kódgenerátor, komplex fejlesztőrendszer A programozói „favágást” könnyíti meg. A programozói „favágást” könnyíti meg. Tematika készül az oktatására Tematika készül az oktatására

79 Modern fejlesztő eszközök – Zend IDE Csúcsszuper eszköz. Csúcsszuper eszköz. kódformázáskódformázás debug, IDE-ben, böngészőben (Böngésző pluginnnal)debug, IDE-ben, böngészőben (Böngésző pluginnnal) ProfilerProfiler Adatbázis kapcsolat kezeléseAdatbázis kapcsolat kezelése Kód sablonokKód sablonok A projekt kódjainak kezeléseA projekt kódjainak kezelése Több nyelv támogatásaTöbb nyelv támogatása stb...stb...

80 Eclipse Freee! Freee! Fejlődik, PHP Eclipse. Sok minden működik Fejlődik, PHP Eclipse. Sok minden működik

81 phpMyAdmin MySQL adatbázis karbantartásához, használatához elengedhetetlen eszköz. MySQL adatbázis karbantartásához, használatához elengedhetetlen eszköz.


Letölteni ppt "A programozás oktatása WEB-es alkalmazásfejlesztő eszközök segítségével Fábián Zoltán 2006 (az anyag itt elérhető:"

Hasonló előadás


Google Hirdetések