Php: Variabile
Total Page:16
File Type:pdf, Size:1020Kb
Service Oriented Architectures / busaco ~ / programare Web ____ _ _ ____ profs.info.uaic.ro ( _ \( )_( )( _ \ )___/ ) _ ( )___/ (__) (_) (_)(__) Dr. Sabin Sabin Buraga Dr. dezvoltarea aplicațiilor Web în PHP / busaco ~ „E mediocru ucenicul / care nu-și depășește maestrul.” profs.info.uaic.ro Leonardo da Vinci Dr. Sabin Sabin Buraga Dr. Personal Home Page Tools (1995) Rasmus Lerdorf / PHP 3 (1998) busaco ~ dezvoltat de Zend – Zeev Suraski & Andi Gutmans / PHP 4 (2000) suport pentru programare obiectuală profs.info.uaic.ro PHP 5 (2004) – varianta cea mai recentă: PHP 5.6 (2014) noi facilități inspirate de Java PHP 6 (actualmente abandonat) Dr. Sabin Sabin Buraga Dr. phpngPHP 7 (2015), PHP 7.1 (la final de 2016) strong typing, suport pentru Unicode, performanță,… php: caracterizare / busaco ~ Server de aplicații Web / oferă un limbaj de programare profs.info.uaic.ro de tip script, interpretat poate fi inclus direct și în cadrul documentelor HTML Dr. Sabin Sabin Buraga Dr. php: caracterizare / busaco ~ Limbajul PHP este procedural, oferind suport și / pentru alte paradigme de programare (obiectuală și, mai recent, funcțională) profs.info.uaic.ro Dr. Sabin Sabin Buraga Dr. php: caracterizare / busaco ~ Limbajul PHP este procedural, oferind suport și / pentru alte paradigme de programare (obiectuală și, mai recent, funcțională) profs.info.uaic.ro poate fi folosit și ca limbaj de uz general Dr. Sabin Sabin Buraga Dr. php: caracterizare / busaco ~ Sintaxă inspirată de C, Perl și Java – case sensitive / uzual, programele PHP au extensia .php profs.info.uaic.ro Dr. Sabin Sabin Buraga Dr. php: caracterizare / busaco ~ / Disponibil gratuit – open source – pentru diverse platforme (Linux, Windows, macOS, UNIX) profs.info.uaic.ro și servere Web: Apache, IIS, nginx,… www.php.net Sabin Buraga Dr. www.zend.com Maniera de funcționare a procesorului (engine-ului) PHP Server Web / cerere HTTP busaco server de ~ (GET, POST,...) / aplicații procesor Client (engine) PHP Zend Web răspuns (reprezentare) profs.info.uaic.ro HTML, PNG, SVG,... programe .php Dr. Sabin Sabin Buraga Dr. resurse (externe) Maniera de funcționare a procesorului (engine-ului) PHP Server Web / cerere HTTP busaco server de ~ (GET, POST,...) / aplicații procesor Client (engine) PHP Zend Web răspuns (reprezentare) profs.info.uaic.ro HTML, PNG, SVG,... programe .php Dr. Sabin Sabin Buraga Dr. eventual, pot fi integrate diverse extensii (module) resurse (externe) php: caracterizare / busaco ~ / Programul PHP e interpretat de Zend Engine 2 generând instrucțiuni (opcodes) interne profs.info.uaic.ro http://www.php.net/manual/en/internals2.opcodes.php http://www.phpinternalsbook.com/ Sabin Buraga Dr. precision = 14 ; controlul preciziei valorilor float – detalii la http://php.net/precision safe_mode = Off ; controlul procesării – http://php.net/safe-mode max_execution_time = 30 ; număr maxim de secunde privind execuția unui program memory_limit = 128M ; dimensiuneaphp: caracterizare maximă a memoriei alocate unui script / post_max_size = 8M ; dimensiunea maximă a datelor transmise prin metoda POST default_mimetype = "text/html" ; tipul MIME implicit transmis de un script PHP busaco ~ file_uploads = On ; sunt permise upload-uri de fișiere / upload_max_filesize = 32M ; dimensiunea maximă a unui fișier preluat de la client allow_url_fopen = On ; se permite deschiderea de fișiere specificate printr-un URL session.use_cookies = 1 ; sesiunile Web vor recurge la cookie-uri session.name = PHPSESSID ; numele cookie-ului referitor la sesiunea Web … ; precizarea extensiilor încărcate la inițializarea serverului de aplicații profs.info.uaic.ro extension=php_pdo_sqlite.dll extension=php_mysqli.dll extension=php_soap.dll … diverse comportamente ale platformei PHP, Sabin Buraga Dr. inclusiv încărcarea extensiilor (biblioteci partajate .so/.dll), se pot configura via fișierul php.ini avansat php: caracterizare / busaco ~ / Maniera de rulare a programelor PHP – eventual, la nivel de bloc de cod – profs.info.uaic.ro poate fi ajustată via directiva declare // setul de caractere folosit pentru generarea conținutului declare (encoding='ISO-8859-1'); Dr. Sabin Sabin Buraga Dr. // verificare strictă a tipurilor de date la PHP 7 declare (strict_types=1); avansat php: caracterizare / busaco ~ / Pentru creșterea performanței, se poate adopta compilarea just-in-time profs.info.uaic.ro HHVM – HipHop Virtual Machine (Facebook) utilizată de Baidu, Box, Etsy, Facebook, Wikipedia,… Dr. Sabin Sabin Buraga Dr. www.hhvm.com php: caracterizare / busaco ~ / Interacțiunea cu utilizatorul: preluarea valorilor câmpurilor formularelor Web cookie-uri profs.info.uaic.ro sesiuni autentificarea utilizatorului Dr. Sabin Sabin Buraga Dr. acces la variabile globale create „din zbor” php: caracterizare / busaco ~ / Facilități pentru tehnologiile Web: prelucrare de URL-uri suport pentru HTTP – inclusiv cURL profs.info.uaic.ro caching via memcached dezvoltare de servicii Web prin SOAP și REST …și altele Sabin Buraga Dr. php: caracterizare / busaco ~ / Suport pentru acces la baze de date: la nivel abstract profs.info.uaic.ro DBAL (DataBase Abstraction layer) iODBC (Independent Open DataBase Connectivity) PDO (PHP Data Objects) Dr. Sabin Sabin Buraga Dr. www.phptherightway.com/#databases_abstraction_layers php: caracterizare / busaco ~ / Suport pentru acces la baze de date: specific unui server de baze de date profs.info.uaic.ro relațional: DB2, MySQL, Oracle, PostgreSQL, SQLite,… bazat pe NoSQL – e.g., MongoDB Dr. Sabin Sabin Buraga Dr. a se parcurge http://www.phptherightway.com/#databases php: caracterizare / busaco ~ / Prelucrarea conținutului resurselor: fișiere audio – via biblioteci: ktaglib, oggvorbis etc. arhive de tip bzip2, LZF, RAR, ZIP, ZLIB profs.info.uaic.ro documente PDF imagini – cu biblioteci: Cairo, GD, EXIF, ImageMagick date în format JSON documente XML – creare, procesare, validare etc. Sabin Buraga Dr. cărți de credit ... php: caracterizare / busaco ~ / Suport pentru resurse de sistem + Internet: sisteme de fișiere, inclusiv FTP procese – cu libevent, pthreads, Gearman,... profs.info.uaic.ro răspuns la evenimente – via Event socket-uri poștă electronică – e.g., IMAP, POP3 Dr. Sabin Sabin Buraga Dr. ...și multe altele PHP ca limbaj de programare procedurală programare limbaj PHP de ca Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ php: tipuri de date – scalare / busaco ~ boolean / TRUE sau FALSE profs.info.uaic.ro Dr. Sabin Sabin Buraga Dr. php: tipuri de date – scalare / busaco ~ integer / valori întregi specificate în baza 10 sau 16 (hexa), 8 (octal), 2 (binar) profs.info.uaic.ro Dr. Sabin Sabin Buraga Dr. php: tipuri de date – scalare / busaco ~ float / numere reale reprezentate uzual conform IEEE 754 (dublă precizie) profs.info.uaic.ro Dr. Sabin Sabin Buraga Dr. php: tipuri de date – scalare / busaco ~ float / numere reale reprezentate uzual conform IEEE 754 (dublă precizie) profs.info.uaic.ro valoare specială – constanta NAN (not a number) funcții predefinite utile: is_nan(), is_finite(), is_infinite() Dr. Sabin Sabin Buraga Dr. php: tipuri de date – scalare / busaco ~ string / șiruri de caractere ASCII (nu există suport nativ pentru Unicode) profs.info.uaic.ro ca la C, pot fi folosite caractere escape precum \n \r \t \e \\ \$ \" Dr. Sabin Sabin Buraga Dr. php: tipuri de date – scalare / busaco ~ string / delimitatori uzuali: " sau ' profs.info.uaic.ro un șir nu poate avea mai mult de 2 GB Dr. Sabin Sabin Buraga Dr. php: tipuri de date – compuse / busaco ~ array / asociere între valori (de orice tip) și chei (de tip integer sau string) profs.info.uaic.ro nu există o distincție clară între tablouri indexate și cele asociative Dr. Sabin Sabin Buraga Dr. php: tipuri de date – compuse / busaco ~ array / // un tablou indexat (vector de valori) $cadouri = array ("trotineta", "laptop", "minge", "topor"); profs.info.uaic.ro // un tablou asociativ – perechi (cheie, valoare) array ( "nume" => "Tux", "dimensiune" => 17, "oferta" => TRUE ); // sintaxa simplificată (pentru PHP 5.4+) Sabin Buraga Dr. [ "nume" => "Tux", "dimensiune" => 17, "oferta" => TRUE ]; php: tipuri de date – compuse / busaco ~ object / instanță a unei clase profs.info.uaic.ro creat cu operatorul new Dr. Sabin Sabin Buraga Dr. php: tipuri de date – speciale / busaco ~ resource / semnifică o referință la o resursă externă profs.info.uaic.ro o resursă e creată de funcții specifice e.g., resursa de tip stream inițiată de funcția fopen() și folosită de funcțiile fread(), feof(), fgets() etc. funcții predefinite: is_resource(), get_resource_type() Sabin Buraga Dr. detalii la http://www.php.net/manual/en/resource.php php: tipuri de date – speciale / busaco ~ null / specifică valoarea NULL reprezentând o variabilă care nu are valoare profs.info.uaic.ro funcții utile: is_null() și unset() Dr. Sabin Sabin Buraga Dr. php: variabile / busaco ~ Variabile create „din zbor” / tipul datelor este determinat pe baza contextului convertirea automată a tipului (type casting) profs.info.uaic.ro e similară celei de la limbajul C $ani = 21; /* o variabilă obișnuită */ $conectat = TRUE; # una de tip Boolean $prefer["culoare"] = "gri"; // un tablou asociativ Sabin Buraga Dr. php: variabile / busaco ~ Variabile create „din zbor” / tipul e determinat pe baza contextului funcții predefinite utile: profs.info.uaic.ro var_dump(), settype(), is_bool(), is_int(), is_float(), is_array(), is_string(), is_scalar(), is_numeric() etc. Dr. Sabin Sabin Buraga Dr. php: variabile / busaco ~ Vizibilitatea variabilelor (scope) / pentru a putea fi folosite