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

Hasonló dokumentumok
Internet programozása. 1. előadás

PHP. Programozzuk a szervert

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

Szintet lépett a PHP. Hojtsy Gábor goba@php.net. Második PHP RoadShow augusztus 21. Tiszaújváros

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

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

Debreceni Egyetem Informatika Kar

3. Gyakorlat Ismerkedés a Java nyelvvel

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

A DBM függvények használata

PHP. Adatbázisok gyakorlat

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

C# gyorstalpaló. Készítette: Major Péter

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

Bevezetés a C++ programozásba

Web-technológia PHP-vel

C# osztályok. Krizsán Zoltán

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

A Horde keretrendszer és az IMP Webmail rendszer

Információs Technológia

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

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

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

Internet technológiák

JAVA PROGRAMOZÁS 3.ELŐADÁS

Java és web programozás

Tipp A Word makrók kimerítõ tárgyalását megtalálhatjuk az O Reilly gondozásában megjelent Writing Word Macros címû könyvben.

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

RIA Rich Internet Application

Programozás és adatbázis kezelés PHP ben

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

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

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

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven III.

Java II. I A Java programozási nyelv alapelemei

INFORMATIKAI ALAPISMERETEK

Szkriptnyelvek. 1. UNIX shell

WEBFEJLESZTÉS 2. PHP NYELVI ALAPOK

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

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

INFORMATIKAI ALAPISMERETEK

15. Programok fordítása és végrehajtása

C# feladatok gyűjteménye

1. óra PHP: személyes honlaptól a portálig 2. óra A PHP telepítése 3. óra Elsõ PHP oldalunk

Informatikus, Webfejlesztő. Nagy Gusztáv

INFORMATIKAI ALAPISMERETEK

Számítástechnikai szerviz online hibabejelentő, adminisztráló, információs weblapja. Diplomaterv sorszáma: 362/2015

Objektumorientált programozás C# nyelven

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

Debreceni Egyetem Informatika Kar DINAMIKUS WEBLAPOK KÉSZÍTÉSÉNEK LEHETŐSÉGEI. Matematikus

C programnyelv 1. Kedves Kollegina, Kolléga!

NONPROFIT ÉRDEKVÉDELMI SZERVEZETEK FEJLESZTÉSE (PL.3346) Java-script nyelv. programozás alapjai. Haramia László

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

Adatbázis használata PHP-ből

117. AA Megoldó Alfréd AA 117.

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

A héj vezérlő szerkezetei I.

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

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

A WEB programozása - JSP1 dr.gál Tibor őszi félév

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

Informatika terméktervezőknek

MySQL kontra MongoDB programozás. SQL és NoSQL megközelítés egy konkrét példán keresztül

LOGalyze Telepítési és Frissítési Dokumentáció Verzió 3.0

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

INFORMATIKAI ALAPISMERETEK

Riak. Pronounced REE-ahk. Elosztott adattároló eszköz. Molnár Péter

Programozás alapjai. 5. előadás

Java II. I A Java programozási nyelv alapelemei

Webszolgáltatások kommunikációs overhead-jének becslése

Tartalomjegyzék. I. rész Az elsõ lépések

A C# programozási nyelv alapjai

Bánsághi Anna

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!

.NET Microsoft.Net Framework

Internet programozása 1. előadás Áttekintés

E- Laboratórium 3 Az ABB robotok alkalmazásai Elméleti leírás

Szoftvertechnológia alapjai Java előadások

Az Orbis adatbáziskezelő

Programozási alapismeretek 3.

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

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

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

A BECKHOFF típusú PLC használata.

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Programozás II. Fájlkezelés

A JavaScript főbb tulajdonságai

2.3. A C nyelv utasításai

VB C++ C# JScript J# Common Language Specification. ADO.NET and XML. Base Class Library. Common Language Runtime. Operating System

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

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

Option Explicit Option Base 1

Adatbázisok I A relációs algebra

forrás: Web és PHP leckék

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Webes űrlapok és az XForms ajánlás

7. Strukturált típusok

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Átírás:

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

Előadások címei 1. PHP nyelv alapjai 2. Objektumorientáltság a PHP-ben 3. A Http és a PHP kapcsolata 4. Adatbázis kezelés a PHP-ben 5. MVC alapjai 6. Zend Framework és az MVC 7. Zend Framework alapelemei 8. Adatbázis modell 9. Zend Framework részletei 10. Form kezelés és validáció 11. Ajax és jquery bemutatása 12. jquery felületek beágyazása 13. Authentikáció és jogosultság kezelés, OpenID

A PHP nyelv története 1994-ben Rasmus Lerdorf írt egy egyszerű PERL script függvénykönyvtárat weboldala funkcionalitásának bővítésére 1995-ben Rasmus C nyelven újraírta az alkalmazást sebesség problémák miatt, ezt nevezte el Personal Home Page Tools-nak. Készített egy másik alkalmazást, amivel webes űrlapokat tudott lementeni adatbázisba, ennek a neve: Form Interpreter 1997-ben egyesítette a két alkalmazást, és így született meg a PHP programnyelv, ami weblapokba illesztve lehetett futtatni, ezvolt a PHP/FI 2.0

PHP: Hypertext Preprocessor 1998-ban Zeev Suraski és Andi Gutmans csatlakozott a projekthez, újraszervezték a PHP parancs-feldolgozó motorját, rengeteg új funkciót építettek be az új magba, amit Zend-nek neveztek el. Ezzel a maggal jelent meg a PHP 3.0. A PHP rövidítés új értelmezése: PHP: Hypertext Preprocessor. 2000-ben jelent meg a PHP 4.0, ami sokkal jobban szervezett volt mint elődje, támogatta modulok hozzáírását (PECL), kompatibilis lett az összes web kiszolgálóval, valamint a nyelvben megjelent az objektumorientáltság. 2002-ben a PHP 4.3-as verziójára megoldott a PHP szinte minden gyerekded problémája.

PHP 5.0 az OO PHP A PHP4 objektumorientáltsága elmaradt a többi objektumorientált nyelvtől, pl: nem létezett referencia változó, az objektumpéldányok mindig másolódtak, nem volt láthatóság, illetve nem volt kivételkezelés. 2004-ben jelent meg a PHP 5.0 a Zend Engine 2.0 nevű motorral, ami teljes mértékben támogatta az objektumorientált programozást. Újdonságok: névterek (namespace) objektumkezelés beépített és speciális függvényekkel

Mi a PHP? Általános célú szkriptnyelv Weboldalakba ágyazható Egyszerűen használható Interpreteres értelmező Az interpreter közvetlenül a forráskódot értelmezi Platform független, minden környezetben elérhető Unix, Windows, Mac, OpenBSD, ) Professzionális szolgáltatásokat nyújt A PHP több nyelv formalitását ötvözi: C, Perl, JavaScript Gyengén típusos nyelv Objektumorientált (Linux,

Hol használható? Szerver oldali Legelterjedtebb használati formája a PHP-nek. Három komponensből áll: PHP értelmező, web kiszolgáló és web böngésző. A PHP szinte minden kiszolgálót támogat: Apache, MS IIS, Netscape, OmniHTTP, CGI és modulos futtatási lehetőség Parancssori (CLI) PHP programot közvetlenül parancssorból lehet futtatni böngésző és szerver nélkül. Kliens oldali (GTK) Hagyományos ablakos asztali alkalmazást lehet készíteni. Ez egyáltalán nem tipikus felhasználási mód.

Szerveroldali futtatás (CGI) CGI esetén a web kiszolgáló (Apache) külső alkalmazásként hívja meg a PHP interpretert átadva a HTTP kérést és a futtatandó állományt. CGI problémája: lassú a futtatás, mert minden kérésnél újra indul az értelmező. FastCGI megoldással kikerülhető a probléma, ebben az esetben az értelmező a memóriában marad és több szálon fut, viszont sok kérésnél nagy a memória igénye. CGI előnye: osztott rendszereken is biztonságos, mivel a PHP értelmező különböző felhasználók jogaival is futhat, így a különböző weboldalak szeparáltan működnek. (suphp vagy suexec)

Szerveroldali futtatás (modulos) Modulos futás esetén a PHP interpreter beépül közvetlenül a web kiszolgálóba, így folyamatosan rendelkezésre áll, nem indul új szál, ezzel sok erőforrás megspórolható. HTTP kérések között is a memóriában marad az interpreter, így perzisztens eszközöket is használhatunk (adatbázis kapcsolat, memcache) Osztott rendszerben nem használható biztonságosan, mivel a felhasználók nem szeparálhatóak el. XCache segítségével a modulos futtatás tovább gyorsítható, a változók és az előfordított forráskódok automatikusan gyorstározódnak.

Kiterjesztések A nyelv csak néhány alap függvénytárat tartalmaz, a továbbiakat külön modulokba szervezték. A modulok C nyelven íródtak. A PHP programból egyszerűen meghívhatóak, nem különbözik a beépített függvényektől. Nagyon sok kiterjesztés van (PECL), egyszerűen bekapcsolhatóak a php.ini-ben..so vagy.dll kiterjesztésúek mysql: mysql függvénytár gd2: képmanipuláló függvények imap, curl, oracle, mssql, ldap, sqlite, zip

PEAR függvénytár Egységbe szervezett függvénykönyvtár. PHP nyelven írt függvények és osztályok. Parancssorból egyszerűen telepíthetőek és frissíthetőek. pear install <csomagnév> Megkeresi az adott nevű csomagot, letölti, kitömöríti a megfelelő helyre, függőségek esetén az összes többi szükséges csomaggal ugyanezt teszi. Egyszerűen használhatóak, a PEAR eszközök elérési útvonala szerepel az alapértelmezett útvonalak között. Rengeteg csomag található különféle kategóriákba szedve a http://pear.php.net weboldalon.

Az első PHP programunk

Az első PHP programunk A kódok a HTML fájlba vannak ágyazva, általában.php kiterjesztésűek. <??> jelek között van maga a php kód, a <?php?> forma ishasználatos. Több egymás utáni PHP kódblokk is szerepelhet, html kódokkal vegyesen Egy php blokkot akár fizikailag is szétvághat egy html kódrész. <?="valami"?> kifejezés egy rövidített változata az <? echo "valami";?>

Változók A PHP gyengén típusos nyelv. Speciális karakterrel kezdődik az azonosítója: $ Nincs explicit változó deklarálás. Kezdő értékadással történik meg a változók deklarálása. A változó értékadáskor felveszi a kifejezés típusát. Van automatikus kezdő értékadás, így automatikus deklaráció is. A php.ini-ben beállítható, hogy figyelmeztessen. A változó a NULL értéket veszi fel. Egy változó típusa futásidőben változhat: értékadáskor és implicit vagy explicit típuskonverziókor

PHP nyelv típusai A PHP nyolc primitív típust támogat. A négy skalár típus: boolean (logikai) $boolean = true; $boolean = false; integer (egész szám) $int = 1234; // decimális szám $int = 0123; // oktális szám (83 decimálisan) $int = 0x1A; // hexadecimális szám (26) float (lebegőpontos szám, vagy double) $float = 1.25; $float = 1.25e0;

PHP nyelv típusai string (karakterlánc, karaktersorozat) $string = 'Szöveg'; A két összetett típus: array (tömb) $array = array(1, 2, 'a', 'b'); object (objektum) $osztaly = new Osztaly(); Végül két speciális típus: resource (erőforrás) NULL (nincs értéke) $nincs_erteke = NULL;

Típus konverzió C és Java szintaktikához hasonlóan $valtozo = (uj_tipus)$valtozo; A következő típusokra lehet így konvertálni: (integer)$var; // egésszé konvertál (boolean)$var; // logikai értékké konvertál (double)$var; // lebegőpontos számmá konvertál (float)$var; (string)$var; // sztringgé konvertál (array)$var; // tömbbé konvertál (object)$var; // objektummá konvertál

Változókezelő függvények Váltózó típus beállítása: settype($valtozo, $uj_tipus); Változó típus lekérdezés: gettype($valtozo); // A típus nevét tartalmazó \ sztringet ad eredményül. Változó létezésének ellenőrzése: isset($var); // true, ha egy változónak van \ értéke, azaz nem NULL unset($var); // megszünteti a változót empty($var); // true, ha az értéke üres, vagy 0

Változókezelő függvények Típus feltétel függvények: is_int($egesz); // true-t ad vissza, ha egész is_float($lebegopontos); // true, ha tört is_bool($boolean); // true, ha true vagy false is_numeric($szam); // ha szám, akár sztring is is_scalar($var); is_string($string); is_array($array); is_object($object); is_null($null); // a változó skalár típusú-e

Automatikus típusegyeztetés A PHP a változókat az operátoroknak megfelelő típusá konvertálja. Egyedül az === és a!== operátorok esetén nincs típusegyeztetés! Boolean típusra való konvertálás esetén: 0, 0.0, NULL,, 0, array() => false Integer típusra konvertálás esetén: false => 0; true => 1; Törtszámoknál az egészrész lesz azeredmény. Számot tartalmazó sztring esetén balról jobbra értelmezi a szöveget számként, amíg oda nem illő karaktert talál.

Sztring típus Sztringek létrehozása aposztróf jelek között: $str ='karakterek'; idézőjelek között: $str ="szöveg"; heredoc szintaxissal: $str = <<<EOT Első sor Második sor EOT; Az első esetben (') nincs se escape karakterezés, se változó behelyettesítés. Escape karakterek: \n a sortörés, \t a tabulátor, \r a kocsivissza, \ az idézőjel, \\ a visszaperjelet jelölik. A sztring első karaktere a nullodik karakter.

Sztring típus A változó behelyettesítés: a sztringben lévő változók helyére az értékük kerül beillesztésre. $str = "Az q értéke: $q"; $str = "A tömb eleme: $array[2]"; $str = "A tömb eleme: ${array['key']}"; $str = "Az objektum attrib: ${obj->attrib}"; A változó behelyettesítést érdemes {} jellel körülhatárolni, hogy ne legyen értelmezési probléma. A sztring karakterei megfoghatóak, illetve módosíthatóak: $str2 = $str{12}.$str{$i}; $str2{2} = 'k'; Sztringek összefűzése: $str = $str1.(1.5).$str2."itt".1.5.($a==5?'i':'n');

Automatikus típusegyeztetés A boolean TRUE érték az "1" sztringgé, a FALSE pedig az "" üres sztringgé konvertálódik. Sztring számmá konvertálása: $str = 1 + "10.5"; // float (11.5) $str = 1 + "-1.3e3"; // float (-1299) $str = 1 + "bob-1.3e3"; // integer (1) $str = 1 + "bob3"; // integer (1) $str = 1 + "10db alma"; // integer (11) $str = 4 + "10.2 kg körte"; // integer (14) $str = "10.2 kg körte" + 1; // integer (11) $str = "10.2 kg körte" + 1.5; // float (11.7)

Sztringkezelő függvények chr(), ord() - Egy megadott kódú karaktert ad vissza és fordítva substr() - Rész sztring strlen() - Sztring hossza strtolower(), strtoupper() trim() - Üres karakter eltávolító str_replace() - csere strpos() - sztringben sztringet keres (ir) md5(), crypt(), crc32()

Tömbök Sorszámozott (0-val kezdődik) $tomb = array("első elem", "masodik" " "); $tomb2[] = "első elem"; $tomb2[] = "masodik"; $tomb2[] = " "; Asszociatív $tomb = array("azon1" => "első elem", "azon2" => "masodik"); $tomb2["azon1"] = "első elem"; $tomb2["azon2"] = "masodik"; $valtozo = $tomb["azon1"]; $tomb[1] = "valami"; A sorszámozott tömb is asszociatív tömb!

Tömbkezelő függvények count() - tömbelem számlálás explode() - Sztring feldarabolása implode() - Tömbből sztringet készít array_key_exists() - ellenőrzi a keresett index/kulcs létezését a tömbben array_keys() - Visszaadja egy tömb összes indexét reset() - a tömb belső mutatóját az első elemére állítja next() - előre mozgatja a tömb belső mutatóját in_array() - TRUE-val tér vissza, ha létezik az érték a tömbben end() - Az utolsó elemre állítja a tömb belső mutatóját

Változó változók Lehetőség van egy sztring karaktersorozatot felhasználni futási időben változó azonosítására. $azonosito = "valtozo_neve"; $$azonosito = "Érdekes "; echo $valtozo_neve; // Érdekes

Debug Lehetőség van egy változó tartalmának a kiíratására, legyen az skalár vagy összetett típus. Megjelenik a változó értéke és típusa var_dump($valtozo); alakkal használjuk, érdemes egy <pre> tag-be tenni. array(3) { [0]=> int(1) [1]=> array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" } }

Konstansok kezelése Konstans magadása define("allando", "Helló világ!"); Konstans létezésének ellenőrzése defined("allando") Konstans értékének visszanyerése echo allando; // Helló világ! echo constant("allando"); // Helló világ! Az interpreter előfeldolgozója kezeli le.

Operátorok aritmetikai: + - * / % összehasonlító: < > <= >= <>!=!== === növelő, csökkentő: ++ -- logikai:! && (and, or, xor) sztring konkatenáció:. Hozzárendelő operátorok $a = ($b = 4) + 5; // $a most 9, és $b 4 Minden két változós operátornak van egy értékadással kombinált párja. += -= *= /= %=.= A $a *= 4+2; egyenértékű a $a = $a * (4+2); kifejezéssel.

Függvények function kulcsszó // függyvény deklaráció function fuggveny($valtozo, $valtozo2="valami"){ print($valtozo." ".$valatozo2); return $valtozo2; } // függvény hívás fuggveny("írd", "ki!"); // Írd ki! fuggveny("írd"); // Írd valami $fg_nev = "fuggveny"; $fg_nev("írd"); // Írd valami call_user_func("fuggveny", "Írd", "ki!"); // Írd ki!

Függvény létrehozása futási időben create_function($parameter, $code); $ujfuggveny = create_function('$a, $b', 'return $a+$b;'); echo $ujfuggveny(4,5); // 9

Változók hatásköre Egy változót értékadással hozunk létre Függvényen belül: function fuggveny($a){ echo $b; // semmit nem ír ki $a = 3; $b = 4; } $a = 1; $b = 2; fuggveny($b); echo $a; //kiírja az 1-et echo $b; //kiírja az 2-et

Globális változók global kulcsszó használatával kiterjeszthető a változók hatásköre function fuggveny($a){ global $b; echo $b; // kiírja az 2-et $a = 3; $b = 4; } $a = 1; $b=2; fuggveny($a); echo $a; //kiírja a 1-t echo $b; //kiírja a 4-t

Elágaztató utasítás I <? if ($kifejezes) { print("ez igaz."); } elseif ($kifejezes2) { print("ez is igaz."); } else { print("ez hamis."); }?>

Elágaztató utasítás II <? if ($kifejezes) {?> <strong>ez igaz.</strong> <? } elseif ($kifejezes2) {?> <strong>ez is igaz.</strong> <? } else {?> <strong>ez hamis.</strong> <? }?>

Ciklus utasítások while ($feltetel) { } for ($i = 0; $i<10; $i++){ } foreach ($tomb as $kulcs => $value) { } Érdemes egy if ($tomb) feltételt elé tenni.