Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP
PHP PHP (Hypertext Preprocessor) je skriptovací jazyk sloužící převážně k tvorbě dynamických webových stránek. Poslení produkční verze je verze 5. Syntaxe vypujčená z C, Javy a Perlu. Automatická deklarace proměnných při prvním použití (8 typů – boolean, integer, float, string, array, object, resource, NULL ). Široká řada knihoven funkcí pro práci s řetězci, databázem, grafikou, matematickými funcemi, atd. Charakteristika –nekomerční produkt, open source –podobný princip jako u ASP –vkládání kódu do HTML –nezávislost na platformě –nezávislost na webovém serveru
Vývoj PHP PHP/FI (Personal Home Page Tools/Forms Interpreter) autorem je Rasmus Lerdorf, základ perl PHP/FI 2.0 druhá implementace v C, přístup k databázím, nainstalováno na 1% serverů PHP 3.0 ( PHP: Hypertext Preprocessor) kompletně přepracovaná nová verze autory Andi Gutmans, Rasmus Lerdorf, Zeev Suraski, podpora objektů, podpora mnoha databází, nové knihovny PHP 4.0 (Zend - ZEev aNDi) nový engine Zend (Zeev aNDi), HTTP session, celkové rozšíření jazyka PHP 5.0 nový engine Zend II (nový objektový model), podpora XML (DOM), SimpleXML extension, SOAP extension, podpora MySQL 4.1, stream a socket
Oblíbenost PHP
Základy jazyka - proměnné Proměnné –nemusí se deklarovat –značí se symbolem $ a pak písmeno (A-Za-z) nebo podtržítko (_) Nepřímé odkazy na proměnné Nepřímé odkazy je skriptovací Správa proměnných –isset() – vrací true, pokud byla proměnná v prostředí deklarována –unset() – ruší deklaraci proměnné (uvolňuje paměť) –empty() – vrací true, pokud proměnná nebyla deklarována, nebo její hodnota se rovná false $jmeno = ‘Lukas’; $$jmeno = ‘Cegan’; echo $Lukas; //Cegan if (isset($jmeno)) { echo $jmeno; }
Základy jazyka – datové typy Superglobální proměnné –$_GET[] – proměnné z url –$_POST[] – proměnné z těla http zprávy –$_COOKIE[] – cookie soubory od klienta –$_ENV[] – proměnné proměnného prostředí –$_SERVER[] – proměnné webového serveru Datové typy –Celá čísla, reální čísla, řetězce, logické hodnoty, prázdné hodnoty, pole, prostředky echo $_ENV; $cislo = 10; //cele cislo $realne = 10.5; //realne cislo $retezec = “text”; //retezec $pravda = false; //logicka hodnota $hodnota = NULL; //prazdna hodnota $pole = array(1,2,3) //pole
Základy jazyka - operátory Binární operátory +, -, *, /, %,. Operátory přiřazení =, +=, -=, *=, /=, %=, ^=,.=, &=, |=, >= Operátory porovnání ==, !=, >, =, <=, ===, !== Logické operátory &&, ||, xor Bitové operátory &, |, ^ Operátory negace !, ~ Inkrementační/dekrementační operátory ++, --
Základy jazyka – řídící struktury Větvení (if, switch) Cykly (while, do while, for) Zahrnování kódu (include, require, eval) if (true) { echo ‘true’; } else { echo ‘false’; } $i = 10; while ($i>0) { echo --$i; } for ($i=0; $i<10; $i++) { echo $i; } include “muj_soubor.php”; switch ($hodnota) { case 1: echo ‘jedna’; break; case 2: echo ‘dva’; break; default: echo ‘nenalezeno’; break; }
Základy jazyka – funkce Syntaxe function název_funkce (argument1,…) { blok příkazů return; } Kontext – proměnné použité ve funkci jsou vně funkce nedostupné. Pokud chceme, aby byla proměnná dostupná i vně, je potřeba využít globální pole ($_GLOBALS[]), nebo klíčové slovo global. Návratová hodnota – návrat výsledku funkce zajistíme příkazem return, pro návrat adresy v paměti, kde je proměnná uložená je nutné při definici názvu funkce začínat znakem & (návrat odkazem). Deklarace argumentů funkce –Předávané hodnotou – function($x, $y) {… –Předávané odkazem – function(&$x) {… –Implicitní argumenty – function($x, $y = 1) {… Statické proměnné – proměnné, jenž zůstávají v platnosti mezi jednotlivými voláními funkce. Deklarace prostřednictví static. function soucet ($x, $y) { return $x+$y; }
OOP v PHP Deklarace třídy Deklaraci třídy (šablony objektu) provádíme prostřednictvím klíčového slova class, následuje název třídy a ve složených závarkách uvádíme seznam vlastností a metod. Tvorba objektů Instance objektů vytváříme pomocí klíčového slova new. Construktor, Destruktor Při vytvoření instance třídy je alokován v paměti prostor, dojde k vytvoření kopie všech vlastností třídy a je vykonán konstruktor (je-li definován). Destruktor je naopak vykonán v okamžiku kdy je objekt odebrán z paměti. $instance = New MojeTrida(); class MojeTrida { //seznam vlastnost function __construct() {... } //seznam metod function __destruct() {... }
Metody a vlastnosti objektu Metody a vlastnosti objektu jsou dostupné prostřednictvím speciální proměnné $this, která je odkazem na objekt. Za tuto proměnou lze pomocí zápisu „-> název“ přistupovat k vlastnostem i metodám objektu. Základními modifikátory pro přístup k vlastnostem a metodám jsou v PHP: public, protected, private. $this->mojeMetoda(); class MojeTrida { public $v = “Veřejný člen”; protected $c = “Chráněný člen”; private $s = “Soukromý člen”; public function vMetoda() {... } protected function cMetoda() {... } private function sMetoda() {... }
Statické metody a vlastnosti Statické metody a vlastnosti nepatří instancím, ale třídám. Deklarují se pomocí klíčového slova static. Dostupné jsou pomocí zápisu „jméno třídy::název vlastnosti/metody“. Uvnitř třídy lze použít identifikátor self. class MojeTrida { static $statickaVlastnost = 0; static function sV1() { self::sV2; } static function sV2() { echo “Statická metoda”; } MojeTrida::$statickaVlastnost++; MojeTrida::$sV1();
Konstanty třídy Konstanty lze ve třídě definovat pomocí klíčového slova const. Názvy konstant se píši velkými písmeny. Práce s konstatntami je stejná jako s statickými vlastnostmi, nenáleží třídě, ale instanci. Konstanty nelze měnit ani odstranit. class MojeTrida { const BARVA = “modrá”; const CISLO = 1; static function tisk() { echo self::BARVA; } echo MojeTrida::CISLO;
Autoload tříd Funkce __autoload() zahrnuje do kódu automatickým způsobem třídy. Aplikace může obsahovat pouze jeden výskyt této funkce. MojeTrida.php autoload.php index.php class MojeTrida { const CISLO = 1; static function tisk() { echo self::CISLO; } function __autoload ($trida) { require_once (“/class/”.$trida.“.php”); } require_once “autoload.php”; MojeTrida::tisk();