(III) Web – Profs.Info.Uaic.Ro/~ Web Busaco
dezvoltarea programare cu limbajul șimediul Dr. Sabin Corneliu aplica Tehnologii Web țiilor Buraga PHP (III) Web – profs.info.uaic.ro/~ Web busaco /
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ care nu „ Leonardo E mediocru ucenicul - ș i dep ăș e da ș te maestrul. Vinci ”
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pentru a Cum folosim un server folosim un de aplicații dezvolta o aplicațieWeb ?
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ e ficientiz a server de aplicații web deaplicații server aplica area ț iilor procesel Scop: Web de or anvergur de dezvoltare ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ I de ntegr asemenea server de aplicații web deaplicații server at î n sau mediu sau mediu de execuție unul , po a t / e mai oferi multe propriul servere server Web server Web
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ P o ate î privind ncuraja server de aplicații web deaplicații server dezvoltarea sau MVC orivariații situație situație tipică: impune de o (re)vezi prezentarea viziune aplica anterioară ț ii Web arhitectural ă Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ de generarea programe Simplifică manierade server de aplicații web deaplicații server de con ( script ț inut - uri dinamic ) aleunei aplicații Web pe invoc partea are de server
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ m edii de s tocare dezvoltare server de aplicații web deaplicații server l c persistent imbaj aracteristici c Aspecte deinteres: Aspecte ookie i nterac API (e) de (e) + cadre de - - ul uri ă ț iune de a programare și particulare modelelor baz sesiuni Web lucru ă , componente,… , de date
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ oferind suport pentru una saumai pentru oferind suport multe server de aplicații web deaplicații server L imbaj (e) de concurentă funcțională imperativă obiectuală paralelă reactivă … programare paradigme :
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ dinamice server de aplicații web deaplicații server statice L imbaj – e.g. – , exemple: exemple: C#, Java, JavaScript (e) de versus programare , PHP,, Python, Ruby Python, Rust
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ IL ( procesate prin uzual IntermediateLanguage , se , prefer server de aplicații web deaplicații server și/ L imbaj sau interpreta compila ă generarea (e) de r ) e programare – r (C, C++, (C, e C#, (Perl, de Erlang cod Python Rust intermediar , Java, Scala , ) , Ruby : ) ,…
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ IL mai recent, în momentul rulării:mai recent, înmomentul ( procesate prin uzual în contextul Web: în contextul IntermediateLanguage , se , prefer server de aplicații web deaplicații server și/ L imbaj sau interpreta compila ă generarea (e) de JavaScript r ) e programare – r (C, C++, (C, e C#, (Perl, de , PHP, 8, Erlang cod Just Python Rust intermediar - in TypeScript , Java, Scala , - ) Time , Ruby ( JIT : ) ) ,…
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ contribuie server de aplicații web deaplicații server (via a func serverului la API de ț ii/ „ puterea clase de baz predefinite aplica ” ă limbajului ț ii ) și
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ acces asigurarea independenței de platformă contribuie la server de aplicații web deaplicații server resursele (via a securitate func serverului la API de ț ii/ mediului „ puterea clase , consisten de baz predefinite aplica ” de ă limbajului operare ță ț ii , ) /rulare, și etc.
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ î n baze server de aplicații web deaplicații server de date S tocare rela persistent ț ionale – folosind ă SQL
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ incorporate incorporate PHP î Java n – baze func server de aplicații web deaplicații server – JDBC ț ADO.NET de date ( ii SQLite SQLite /module S tocare ( Java Java rela + exemple pentru mysqli DataBase predefinite persistent ț ionale ) : ASP.NET sau – Connectivity folosind , plus diverse ă biblioteci SQL extensii )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ORM PHP – ( + Object framework î implementări: implementări: n Java baze server de aplicații web deaplicații server - Relational Mapping Relational – specificația specificația de date Node.js - uri: S Go tocare Cycle EclipseLink – framework – rela biblioteca ORM JPA persistent ț ionale ( , Java PersistenceAPI Doctrine , - Hibernate ul ) Sequelize : șablonul : șablonul Xorm – folosind , ă Propel , OpenJPA Data , avansat RedBean SQL ) ,… Mapper etc.
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Active Record Active active_record pentru a încapsulaîntr pentru DBIx î n baze :: Play Framework Class server de aplicații web deaplicații server , TypeORM – șablon arhitectural utilizat în cadrul ORM încadrulutilizat arhitectural șablon de date (Perl), S tocare (module Node.js),(module Django rela exemple - (Java, Scala), persistent o clasă sauun o o tabelă ț ionale ORM : și – Orator folosind Rails Castle Project Project Castle ă (Ruby) ( Python avansat SQL ), view (.NET),
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ valid transform pe proces ă ri server de aplicații web deaplicații server baza de date ă date (semi) S modelelor ri ă tocare ri interog : DOM, SAX, : DOM, î : DTD, XML Schema, RELAX,… : Schema, DTD, XML n alte ă persistent ri formate arborescente structurate : XQuery SimpleXML : XSLT XPath, ă : XML etc. cursurile viitoare
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Cassandra distribuite recurg (bazate pe grafuri și/sau cheie și/sau pegrafuri (bazate , MarkLogic server de aplicații web deaplicații server â github.com/ nd la nosql.mypopescu.com/kb/ la S nivel tocare , alte MongoDB exemplific erictleung de Internet, de Internet, paradigme persistent , Neo4j / awesome ă ri : , OpenLink non scalabile nosql ă — - - nosql rela valoare) ț Virtuoso avansat – ionale NoSQL , Redis
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ î n cadrul facilitat server de aplicații web deaplicații server codului In ă terac - de surs controale ă ț iune invocat Web specificate la nivelde server
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ oferi componente Web ( Web componente generare se pot î n noi cadrul controale emula de cod facilitat server de aplicații web deaplicații server codului c HTML + HTML â mpuri In procesabil laniveldeprocesabil client ( interactive interactive ă terac - de surs CSS + controale din ă ț iune invocat formularele JavaScript – e.g. Web specificate , calendar, , la nivelde ) executate de ) executate HTML slideshow server front ș i / browser sau - end ,… ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ASP.NET ( ASP.NET platforma formidable < server de aplicații web deaplicații server Java: asp:control framework , form specificația specificația In terac exemplific - data > – - ul e.g. ț , iune forms PRADO JSF , FileUpload ă ri ( Web Ja – : karta module Node.js (PHP) , ListBox ServerFaces avansat , Table ,... ) )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ î ncurajarea folosirii server de aplicații web deaplicații server pe baza Web templatesystem In de machete de terac unui procesor ț iune Web vizualizare specific ( templates ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ( e.g. , utilizând preluate preluate ori alte reprezentări în alte formate ori alte reprezentări ( pentru de un Web templateWeb server de aplicații web deaplicații server dintr specifica Web templatesystem procesor - In a genera o baz terac ț ii de ă ), de date ț ( prezentare iune documente datele templateengine Web sau fișiere persistente a con HTML ) sunt ) ț inutului folosite
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ $ $ $ $ $ $ //
> > > > = = set set set set set "[@ new = = " PHP: " " profile location identity HTML ( ( ( ( ( photoURL ' ' ' ' ' de procesare a machetelor de vizualizare location lastName firstName photoURL username specifica Template [@ template procesarea " variabilă > -- " " User > > > [@ ' [@ ) ' ]" ' = ) ( ' ' ) ) firstName ' ) location = templates profile = ' = alt = Romania ' ' Pinguinesscool ția ' ' Tuxy machetei Tux = imgs – implementare " ] photo . ' : – tpl ; de prezentare a conținutului ' [@ ; ] / tux.svg
] ce vorfi înlocuitevalorile cu efective / ' [@ ; ) includenume devariabile profile.tpl username " /> exemplu lastName ' ; ' ; ' ); ] ]
: User Romania Tuxy profile Pinguinesscool – : Tux aici ,Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Mustache Razor Apache Apache (.NET), FreeMarker (C++, JS, PHP, Python, Scala,…), Scala,…), JS, PHP,Python, (C++, server de aplicații web deaplicații server Smarty Web templatesystem In la terac (Java), nivel (PHP), ț iune de server Blade Tonic Web (PHP), (PHP), Haml Pug XSLT (Node.js), (Node.js), (Ruby), (Ruby), (XML)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ github.com/ doT , EJS sorrycc server de aplicații web deaplicații server , disponibile Handlebars Web templatesystem In / awesome la terac nivel pentru , ț Mustache.js iune - de javascript#templating client JavaScript: JavaScript: Web , Nunjucks - engines ,…
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ HTTP::Session play.mvc.Http.Cookie ( clasa clasa web.py cookie via SessionComponent HttpSession managementul structuri - parser ), HttpFoundation (Perl), server de aplicații web deaplicații server și express ( / ASP.NET ( tipuri session Play In - ( session ( CakePHP terac pentru pentru componentă componentă de date ( ), interfața cookie Flask ț (module Node.js pentru pentru (moduleNode.js Java iune – ), - framework tabloul – urilor /Scala diverse HttpSession Symfony Web ), session și sessions Python), sesiunilor exempl – ( framework servlet ( Ruby avansat ( Gorilla web.session ificări Express - on uri Java), uri Rails PHP) – : Go ) ), , ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ eventual, via eventual, transfer asincron server de aplicații web deaplicații server framework In de date terac - ț uri iune via /module/ suita Web de vezi cursurile clase tehnologii viitoare adi ț ionale Ajax
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ proiectare vizând procesările concurente și/sau distribuite șialtele) și/sau distribuite concurente vizând procesările publish CBD ( DDD ( DDD stimula MOM ( components domain - subscribe AMI ( AMI S message uport rea/impunerea (arhitecturale, comportamentale, comportamentale, structurale, (arhitecturale, server de aplicații web deaplicații server - asynchronous driven , SOA SOA ( , - based acordat - oriented design service development ), DTO ( method middleware ingineriei - folosir oriented data transferdata invocation ), DAO( ii unor architecture ), microservice software data ș ), abloane broker object access avansat ), singleton , ), , MV* object façade de , ,… ), ,
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ uzual, specific aplicațiilor aplicațiilor specific uzual, partea de procesare cu maniera maniera de prezentare cu de procesare partea exemplificare: și mecanismul de acces la modelul datelor sourcemaking.com/ proiectare anti - antipatterns șablonul șablonul – aici, aici, Web /spaghetti Spaghetti – care „amestecă” „amestecă” care - code Code ( view )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ www.oreilly.com/programming/free/files/software conform M.Richards, încurajează adoptarea unei/unor arhitecturi: unei/unor adoptarea încurajează S conduse de evenimente conduse deevenimente ( folosind uport extensibile extensibile ( server de aplicații web deaplicații server „în nori”( acordat stratificate stratificate ( Software microservicii microkernel space Architecture ingineriei - based layered ( microservices event , / cloud Patterns plug - ) software architecture - driven ) - in avansat , O’Reilly, , 2015 ) ) ) - patterns.pdf
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Erlang Exemple Go C# / C++ Elixir Elixir Haskell Dart server de aplicații web deaplicații server – et al. Beego – CppCMS – – (platforma (platforma A Chicago Boss Chicago – – D queduct , Buffalo inclusiv Snap – Dweb , Silicon , Spock , , shelf Gin , .NET vibe.d framework , , , TreeFrog Phoenix , Gorilla , Yesod ) Stream – ASP.NET , etc. , Revel ,… N2O , - Wt uri , Sugar
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ folosite de o aplicație Web inspectarea tehnologiilor Wapplyzer cu instrument și WhatRuns ele
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ JBoss Java JavaScript ( Perl , Jakarta EnterpriseJakarta Tomcat Exemple – server de aplicații web deaplicații server Catalyst ( ECMAScript , Payara Grails Locomotive – , inclusiv CGI:: PHP + , Spring Apache Apache Edition ) Application – – Node.js PHP , framework , Meteor Vaadin – Struts ex + - J2EE , ,… Derby Mojolicious , Apache ) - – uri , GlassFish Express Wicket , , ,
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ cu instrumentul instrumentul cu folosite Webde o aplicație inspectarea tehnologiilor WhatRuns
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ (pe baza specificației (pe bazaspecificației Python Ruby Rust Exemple – server de aplicații web deaplicații server Gunicorn + – – (implementează specificația specificația (implementează TypeScript Django Passenger Gotham + WSGI Ruby on Rails Ruby – Scheme inclusiv , , TurboGears Tornado , – Iron Python Web ServerGateway Interface – , Puma Deno – , Rocket Artanis framework , , , , uWSGI Sinatra Thin LoopBack , web2py , Rouille , Rack Unicorn , Waitress ) - uri etc. ,… etc. ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ inspectarea tehnologiilor folosite cu instrumentul instrumentul cu de o aplicație Webde oaplicație WhatRuns
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ (disponibil pentru Java, JS, pentru (disponibil Exemple server de aplicații web deaplicații server abordare – inclusiv Vert.x Groovy multi framework - limbaj: , Ruby , Ceylon, Scala,…) Ceylon, , - uri
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Integratîntr (sistem de operare, server Web, Web, server de de (sistem server debaze date, operare, oferind suport pentru dezvoltarea de Web dezvoltarea aplicații pentru oferind suport suită software (servere,instrumente, utilitare,…) disponibilă serverde aplicații, limbaj deprogramare) server de aplicații web deaplicații server - pentru o anumită o anumită platformă pentru o stivă de tehnologii – uzual, în regim uzual, open ( software source – stack ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ (Linux, Apache HTTP (Linux, HTTP Server, Apache Integratîntr WAMP FAMP server de aplicații web deaplicații server (Windows), - o stivă de tehnologii www.apachefriends.org ( FreeBSD alternative: MariaDB LAMP XAMP ), MAMP / MongoDB ( multi ( macOS ( - software platformă) , Perl/PHP/ ), stack Python )
Dr. Sabin Buraga) profs.info.uaic.ro/~busaco/ server de aplicații web deaplicații server instrumente dedicate dezvoltatorilor Web dezvoltatorilor www.wamp.net avansat
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Integratîntr pe MEAN ME baza R N server de aplicații web deaplicații server ( JavaScript MongoDB - ( MongoDB o stivă de tehnologii – , Express, Angular, Node.js) Angular,Express, , , Express, , full stack suplimentul Node.js suplimentul Web development React de parcurs ( software , Node.js) avansat stack ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Integratîntr LLMP LEMP LAPP (Linux, (Linux, (Linux, Apache, LYCE server de aplicații web deaplicații server LYME - Lighttpd o abordări complementare: Nginx stivă de tehnologii (Linux, (Linux, , MySQL , MySQL Yaws PostgreSQL Yaws / , MariaDB / CouchDB , MariaDB Mnesia , Perl/PHP/ , Perl/PHP/ , , , Perl/PHP/ Erlang Erlang ( software ) ) avansat Python Python Python stack ) ) ) ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ inspectarea tehnologiilor folosite de oaplicație Web cu instrumentul instrumentul cu studi i de WhatRuns caz
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Informa ții esențiale despre PHP ?
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ interacțiune, acces acces de la baze interacțiune, date, paradigme: procedurală, obiectuală, funcțională obiectuală, procedurală, paradigme: biblioteci și instrumente,biblioteci studii de caz concrete PHP ca platformă de dezvoltareWeb Limbajul de programare PHP Caracteristici Istoric php importante framework - uri,
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ PHP 5 strong actualizare majoră: compilare întimp compilare majoră: actualizare dezvoltat de date și construcții sintactice, îmbunătățiri etc. îmbunătățiri sintactice, de date și construcții PHP ( 2004 typ 7 suport Personal Home Page Personal Home Tools ( ing 2015 ) de noi – , suport pentru pentru suport , varianta cea cea mai recentă:varianta PHP 8 Zend pentru ), facilit PHP 7.2 Rasmus PHP 4 PHP 3 – ( ăț Zeev noiembrie 2020noiembrie programare i inspirate ( ( ( Lerdorf Suraski 2017 200 1998 Unicode 0 ) ) ) , d PHP 7. obiectual & e Java , performanță,… Andi ( - ) 1995 real, noi tipuri real, noi tipuri PHP 5.6 4 Gutmans ( ) ă 201 9 ( 2014 ) ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ poate fi inclus ofer Server de php direct de tip ă un : limbaj caracterizare ș script i î n aplica cadrul , de interpretat programare ț documentelor ii Web HTML
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Limbajul pentru poate general șica deuz poate fi folosit limbaj (obiectuală și, funcțională) mai recent, (obiectuală PHP alte paradigmealte de programare php este : caracterizare procedural, oferind suport ș i
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ S uzual niciun efect asupra modului de execuție a deexecuție modului programului asupra efect niciun intax spațiile albe (caracterele spațiu, spațiu, albe(caracterele spațiile , fi , ă șierele inspirat php ce conțin cod ce conțin ă de C, Perl : caracterizare - sursă ș i Java Tab PHPau , – New LineNew case sensitive extensia ) n ) - au au . php
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ diverse platforme Disponibil ș i servere php (FreeBSD, Linux, Linux, Windows, macOS (FreeBSD, etc.) gratuit Web: Apache, IIS, IIS, Apache, Web: : www.zend.com www.php.net caracterizare – opensource N ginx – pentru , …
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Maniera Client Client Web de func HTML, PNG, PDF, SVG, JSON, ZIP,... (reprezentare) (GET, POST,...) cerere ț ionare răspuns HTTP a procesorului serverde aplicații aplicații PHP programe ServerWeb .php ( resurse (externe) engine procesor ( engine Zend - ului ) ) PHP )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ diverse Maniera eventual, fi pot in Client Client Web extensii de func HTML, PNG, PDF, SVG, JSON, ZIP,... (reprezentare) (GET, POST,...) cerere ( ț module ionare răspuns tegrate HTTP a ) procesorului serverde aplicații aplicații PHP programe ServerWeb .php ( resurse (externe) engine procesor ( engine Zend - ului ) ) PHP )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Programul PHP de ZendProgramul e interpretat Engine 2 care www genereaz .php.net/manual/en/internals2.opcodes.php php www.phpinternalsbook.com ă instrucțiuni interne ă instrucțiuni : caracterizare – opcodes
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ codul PHP e interpretat de fiecare dată fazele importante ale interpretării program ( compilare execuție procesare rezultat ( execu vs. când trebuie executat compilarea codului Java ție ( programelor PHP script output ( Zend parse o p c ) PHP ode )
) )
s
interpretor PHP interpretor compilator Java compilator compilare Java Virtual fișier binar ( procesare salvare cod binar rezultat ( cod - sursă execuție output compilare ( Machine bytecodes parse Java . class ) ) )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ------op * # line ?> $greeter $greeter } class 0 3 } { public echo Greeting 7 > 7 5 4 3 1 - = > function "Hello sayHello new RETURN EXT_STMT ECHO ADD_VAR ADD_STRING EXT_STMT RECV EXT_NOP { Greeting $to sayHello ( " "World" ; (); fetch ( opcodes $to ); ) ext convertirea PHP codului tinyurl.com/zn6c53x return în ~0 ~0, !0 ~0, ~0 ' ~0 !0 opcodes operands Hello avansat null ~0 +'
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ compilare procesare( memoria partajată salvare în nu există în execu parse opcodes rezultat ( execuție check program PHP cache ție ( ție ) php opcode Zend output există în : cache Engine caracterizare memoria partajată memoria ( shared preluare din ) cache ) memory ( cached ) ) pentru eficiență, eficiență, pentru într opcode sunt stocatesunt avansat partajată - o memorie memorie o - urile
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ extension ; precizarea extensiilor încărcate la inițializarea serverului de aplicații … session.name session.use_cookies upload_max_filesize file_uploads default_mimetype post_max_size memory_limit max_execution_time disable_functions safe_mode precision … extension extension inclusiv =php_soap.dll =php_mysqli.dll =php_pdo_sqlite.dll = 14 = Off = Off d = On = On încărcarea extensiilor (biblioteci partajate partajate (biblioteci extensiilor încărcarea iverse = 128M = PHPSESSID = 8M = = "text/html" = "text/html" se pot configura via fișierul via fișierul configura se pot " = 32M allow_url_fopen = 30 = 1 ; dimensiunea maximă a memoriei alocate unui script ; dimensiunea maximă a datelor transmise prin metoda POST ; ; sunt acceptate preluări ( ; comportamente controlul controlul php ; numele ; numele ; sesiunile Web vor recurge la ; dimensiunea ; dimensiunea maximă a unui fișier preluat de la client ; număr maxim de secunde privind execuția unui program ; suport ; suport pentru ; suport pentru servicii Web dezvoltate cu SOAP ; suport pentru ; tipul ; tipul MIME implicit transmis de un script PHP preciziei proces : caracterizare , eval" cookie ării valorilor ; – - funcții funcții nepermise ( ului referitor la sesiunea Web SQLite MySQL de studiat upload ale platformei PHP ale platformei float float via PDO ( - uri) de fișiere – php.net/safe detalii cookie php.ini PHPData e.g. la - uri php.net/precision , rațiuni de securitate) - mode Objects , .so ) / .dll ), Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ declare // declare // verificare setul de ( ( strict_types encoding www.php.net/manual/en/control caractere strictă Maniera de rulare a programelor PHP deprogramelor Maniera rularea poate poate via fi ajustată directiva – eventual, la nivel de bloc decod laniveldebloc eventual, = php a 'UTF folosit tipurilor = 1 ); - : 8' caracterizare ); pentru de date generarea - structures.declare.php la PHP 7+ declare conținutului –
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ cod se poate adopta compilarea HHVM surs www.hhvm.com Pentru creșterea performanței, ă PHP – HipHop php opcodes : caracterizare Virtual Machine github.com/ JIT cod mașină mașină ( cod facebook JIT – (Facebook) just e.g. / hhvm avansat - , x86 , in - time / - 64)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ utilizat se poate adopta compilarea permite încărcarea de extensii scrise înPHP/C++ include include HHVM ă de Pentru creșterea performanței, și un server Web Web performant: și unserver – Baidu HipHop php , Box, : caracterizare Virtual Machine Etsy , Facebook, Facebook, , JIT – (Facebook) just Wikipedia Proxygen avansat - in - time ,…
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ se poate adopta compilarea www.zend.com/blog/exploring Pentru creșterea performanței, www.zend.com/blog/exploring php PHP 8 oferăsuport nativ : caracterizare - new JIT - php – - php just - jit - - compiler avansat 8 - in - time
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ preluarea valorilor câmpurilor câmpurilor valorilor preluarea acces la variabile globale globale acces la variabile I nterac autentificarea autentificarea utilizatorului php ț : iunea caracterizare cookie sesiuni cu - uri utilizatorul – create „din zbor” create formulare : lor Web
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ dezvoltare de servicii Web de serviciiSOAP și REST dezvoltare Web prin Facilitățipentru tehnologiile Web: suport pentru HTTP pentru suport php caching prelucrare de URL prelucrare : caracterizare …și altele via memcached – inclusiv inclusiv - uri cURL
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ www.phptherightway.com/#databases_abstraction_layers iODBC( Suport DBA Independent Open L php pentru PDO( ( DataBase Abstraction layer Abstraction DataBase la nivelabstract : PHP Data PHP Data caracterizare acces la DataBase Objects baze ) de date: Connectivity ) )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ relațional: DB2, a se parcurge Suport specific unui specific bazat pe pe NoSQL bazat php pentru www.phptherightway.com/#databases MySQL,Oracle,PostgreSQL,SQLite,… : caracterizare server de baze de baze de date server acces la – e.g. , baze MongoDB de date:
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ documente XML fișiere fișiere audio P arhive r elucrarea conținut grafic îndiverseformate conținut informații privind cărți de credit privindinformații php de tip bzip2, LZF, ZIP, ZLIB RAR, de tipbzip2, – fișiere fișiere JSONîn format via biblioteci: via biblioteci: documente – : con creare, procesare, validarecreare, procesare, etc. caracterizare ț inutului ... PDF ktaglib resurselor , oggvorbis : etc.
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Suport pentru resurse desistem + Internet: procese procese poștă electronică electronică poștă răspuns laevenimente sisteme sisteme de fișiere, FTP inclusiv php – cu ...și altele ...și multe : Libevent caracterizare socket – , - e.g. uri PCNTL , IMAP, POP3IMAP, , – via , pthreads Event ,...
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ wronghands1.files.wordpress.com/2020/01/reference (în loc (în loc de) pauză - shelf.jpg
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ PHP ca limbaj deca limbaj programarePHP procedurală
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ paradigmă bazată pe apeluri de proceduri (rutine, funcții) (rutine, deproceduri apeluri bazată pe paradigmă instrucțiuni (comenzi) ce modifică ce modifică starea programului (comenzi) instrucțiuni conținând oserie depași realizarea calculelor pentru BASIC (1964), Pascal (1970), C (1972), Ada (1978) C (1972), Pascal (1970), (1964), BASIC limbajele procedurale sunt imperative, imperative, utilizând sunt procedurale limbajele exemple: FORTRAN (1954), ALGOL (1958), (1954), ALGOL exemple: FORTRAN ( procedural procedural programming Programare procedurală php : caracterizare )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ php : tipuri de date tipuri true boolean sau false – scalare
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ www.php.net/manual/en/language.types.integer.php php 2 ( 8 ( 16 ( 10 ( valori întregi specificate valoriîntregi specificate în baza… binary octal : hex decimal tipuri de date tipuri ) ) ) ) int 0b111010010110 0 0xE96 3734 7226 – scalare
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ (precizia poate fi ajustată în fișierul de configurare înfișierul deconfigurare fi ajustată poate (precizia dimensiunea reprezentării e dependentă de platformă reprezentate uzual conform conform uzual reprezentate www.php.net/manual/en/language.types.float.php php : tipuri de date tipuri floating numere realenumere - float point IEEE 754 IEEE - gui.de – scalare (dublă precizie) (dublă php.ini ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ php constanta constanta : tipuri de date tipuri funcții predefinite predefinite funcții utile: valoare specială valoare is_infinite NAN is_finite is_nan float ( not a number not () () () – : scalare )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ (începând cu (începând php PHP7 : tipuri de date tipuri șiruri de caractere ASCII ASCII șiruri decaractere , există suport nativ pentru nativ există suport string – scalare Unicode ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ (începând cu (începând \ \ ( Backslash \ n php pot fi folositecaracterepot fi ( NewLine PHP7 : ) tipuri de date tipuri șiruri de caractere ASCII ASCII șiruri decaractere \ $ ( Dollar , ) există suport nativ pentru Unicode) pentru nativ există suport \ r ( Carriage Return Carriage string ) \ " ( Double Quote Double escape – scalare precum ) \ t ( ) Tab \ ' ( Quote ) )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ php un șir nu poate avea un șirpoate nu mai de 2mult GB : tipuri de date tipuri delimitatori uzuali: uzuali: delimitatori string " sau ' – scalare
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ php asociere tip) valori (deorice asociere între : tipuri de date tipuri și chei și chei (de tip array int sau – string compuse )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ listă (vector), tablou asociativ asociativ tablou listă (vector), unei asocieri unei un tablou php între tablouri indexate indexate și cele asociative între tablouri poate : tipuri de date tipuri de valori nu există odistincție nu există clară reprezenta diverse structuri de date: reprezenta diversestructuri stivă, coadă,… – array mapping – hash – ), dicționar, colecție, colecție, dicționar, ), compuse (implementarea (implementarea
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ $cadouri // [ // array // "nume" sintaxa un un tablou tablou ( "nume" = => simplificată php array asociativ indexat " Tux => : ( " "ceas" tipuri de date tipuri " , Tux "dimensiune" (vector – – " perechi preferată , , "dimensiune" "prăjitură" de valori) , 17 "colier" – valoare> sintaxa , => "oferta" – 17 cu , compuse , "topor" "oferta" PHP inițială => 5.4) true ); => ]; true );
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ php : tipuri de date tipuri creat cu operatorul operatorul creat cu instanță instanță clase a unei object – new compuse
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ exemplific e.g. și folosită de și folosită apoi funcțiile , resursa detip , php semnifică resursăexternă semnifică lao o referință pdfdocument o resursă e creată de funcții specifice creatădeo resursă e funcții : ări tipuri de date tipuri : bzip2 , , stream printer curl resource , ftp , ini stream , gd fread() țiată , mysql , – socket de funcția , speciale feof() link , , , xml mysql fgets() , zlib fopen() result etc. ,
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ detalii detalii la php semnifică resursăexternă semnifică lao o referință : tipuri de date tipuri www.php.net/manual/en/resource.php funcții predefinite: predefinite: funcții get_resource_type is_resource resource () – () speciale
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ reprezentând o variabilă care nu are valoare carenu ovariabilă reprezentând php : tipuri de date tipuri specifică valoarea specifică funcții utile: funcții is_null unset null () () – null speciale
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Variabilele pot stoca valori www.php.net/manual/en/language.variables.php caractere sau referințe(specificate cu au nume compuse din litere,cifre și php – _ apar prefixatede simbolul : variabile ținând unui tip de date & ) $ –
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ $ani $prefer $conectat tipul tipul convertirea automată a tipului ( a tipului automată convertirea = de date 21 [ "culoare" e similară C celei de lalimbajul ; Variabile = true e determinat pe baza e determinat baza pe contextului php ; ] = "gri" : create variabile ; // # /* un una o „ variabilă din tablou de zbor tip typecasting asociativ Boolean de ” tip Int */ )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ echo echo // // // $nume execuția WebPHPvia instrumentul online a codului pentru a comportament unei ' " Salut Salut = variabile șirurile ' Tux $nume! $nume ' ; de diferit în ! \ caractere \ n funcție n ' " ; ; privitor de delimitatorii la substituția folosiți valorii Salut $nume!Salut Salut Tux! efective Ideone \ n
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ is_bool() Funcții predefinite utile , is_int() is_scalar() php , is_float() var_dump … : settype și altele variabile , is_numeric() , () is_array() () , is_string : ()
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pentru a putea a putea în fi folosite pentru întreg programul, php.net/manual/ variabilele trebuie declarate ca fiind cafiind declarate trebuie variabilele Vizibilitateavariabilelor( php en / language.variables.scope.php : variabile scope globale )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ oferaScor } function $scor echo scor Undefined variable: = "Scor in 33 oferaScor (); prog.php ; curent: () on line " { . $scor 4 ; oferaScor } function $scor // echo global Scor curent: 33 similar = "Scor 33 $scor oferaScor (); ; cu curent: $GLOBALS["scor"] ; () " { . $scor ;
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ( e.g. , în cadrul unei darnu în cadrulfuncții), , o variabilăfi poate declarată cafiind atunci când execuția programului părăsește părăsește execuția când programului atunci există există delocal domeniul vizibilitate doar în Vizibilitateavariabilelor( acel domeniu de vizibilitate domeniu deacel vizibilitate php : variabile - și pierde valoarea scope statică )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ fiecare variabilă are asociat ( areasociat fiecare în memorie variabilă un container Eliberarea memoriei alocate serealizeazăautomat vezi funcția www.php.net/manual/en/features.gc.php xdebug_debug_zval ( garbage php : variabile collection () oferită deoferită extensia ) Xdebug zval
Dr. Sabin Buragaprofs.info.uaic.ro) /~busaco/ Variabiledisponibile în întregprogramul php tablou asociativ asociativ ce conține referințe tablou la toate variabilele definite la toatevariabileledefinite global : variabile predefinite variabile ( $GLOBALS superglobals [ ] )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ $_GET [ ] $_POST [ ] $_FILES [ ] $_REQUEST [ ] [ ]$_REQUEST[ ]$_FILES$_GET[ ]$_POST php : variabile predefinite variabile $ $_SESSION [ ] $_SESSION $_SERVER [ ] $_SERVER php_errormsg $ argc ... $ argv
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ serverului sesiunea Websesiunea date despre linia linia de comandă specifice argumente în $_GET [ ] $_POST [ ] $_FILES [ ] $_REQUEST [ ] [ ]$_REQUEST[ ]$_FILES$_GET[ ]$_POST php Web : variabile predefinite variabile $ $_SESSION [ ] $_SESSION $_SERVER [ ] $_SERVER php_errormsg $ argc ... $ argv mesaj de eroaremesaj ale clientului ale cereri HTTP raportat
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ sunt disponibile laîn programsunt nivel global define www.php.net/manual/en/function.define.php ( string Specificate define php $ nume ( "DIMENS_MIN" : constante , mixed cu define $ valoare , 13 ( ); ) ) : bool
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ php : DIRECTORY_SEPARATOR constante predefinite constante Exemplificări: PHP_VERSION PHP_INT_SIZE PHP_INT_MAX PHP_EOL PHP_OS false true null
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ E_PARSE E_WARNING E_ERROR E_DEPRECATED E_STRICT E_NOTICE www.phptherightway.com/#errors_and_exceptions www.php.net/manual/en/errorfunc.constants.php Controlul manierei manierei a erorilor: de raportare Controlul php : constante predefinite constante notificări despre aspecte aspecte demodate notificări despre codului privindîmbunătățirea sugestii rulăriinotificări în timpul ( a codului erori deprocesare avertismente erorifatale (execuția script - ului e oprită) ului parsing )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Mediul de execuție „magice” deexecuție oferă laconstante Mediul acces ale căror valori pot fi folosite în cadrul programului încadrul fi folosite pot valori căror ale php : constante predefinite constante __NAMESPACE__ __FUNCTION__ __METHOD__ __CLASS__ __CLASS__ __TRAIT__ __TRAIT__ __LINE__ __FILE__ __DIR__ avansat
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ șiruri de caractere (concatenare) (concatenare) șiruri de caractere comparații: comparații: asignare avalorii: Majoritatea, similari celor din limbajul C celordinlimbajul similari Majoritatea, control al raportăriierorilor:control asignare prin referință: referință: prin asignare aritmetici: aritmetici: logici: php ======<>!== != < ><= >= ?: ?? <=> pe biți: biți: pe referință: referință: : and or || xor !&& operatori = & | ^ <<>> & | și + => - * / %++ (pentru tablouri) (pentru & – -- =& ca la Perl: @ . .=
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ compararea a două expresii scalar), adouă expresii tip (de compararea În PHP 7+, se pot folosi și se folosi operatori: În PHP7+, noii pot echo echo echo 17.5 15.5 15.5 php întorcând întorcând <=> <=> <=> <=> : 15.5 15.5 16.5 ( operatori spaceship ; ; ; – // // // 1 , 1 0 - 1 0 (mai (egalitate) (mai sau ) 1 mare) mic)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ $ // // oferă valoarea primului operand dacă dacă operand există valoareași nueNULL, primului oferă username (preluată folosim altfel întoarce valoarea celui de celui valoarea întoarce altfel ca În PHP 7+, se pot folosi și se folosi operatori: În PHP7+, noii pot prin = nume $_GET GET de [ sau ' php user ?? utilizator POST); ( ' null coalescing null ] : ?? operatori $_POST valoarea dacă nu [ ' - user al doilea operand furnizată există, ) ' ] ?? va ' în tux fi formular ' ' ; tux '
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } if } echo echo else (! $nume if { , php ( ( "Bine "Numele switch ) { asem : ai , structuri de control structuri while venit, nu ănătoare a , fost " do . $nume , furnizat…" for celor , break . "! din C \ n , ); " continue );
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ for // echo /* foreach $ // } $ sum $ umplem pentru realizăm afișăm values sum ( $index ( = "
+= 0 ( [ a $ ; suma $index un values $item fi = suma Sum $ sum php trimisă 1 tablou ; $index obținută ; of ] valorilor as . = ".
" $index de Web la standard 1 */ ); is ++) la < 10 strong { >" .Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/
Sum
Sum of first 10 numbers is 55.
php Invocarea apel val salv ues ă m ă . php m interpretorul codul ( din rularea linia î ntr - ) un fi un de programului PHPdin comand ș ier text linia – ă val de : PHP PHP direct ues comand . php ăDr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pentru plas ă m fi î Invocarea n navigator, a - ș l ierul invoca la nivelulserverului sursă via ( indic rularea metoda – cu drepturi de citireși execuție cu drepturi ă m URL ) programului GET a - ul c protocolului ă Web: tre rezultatul program de PHP script generat HTTP
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ caută fișierul sursă în directoarele predefinite specificate predefinite specificate sursă îndirectoarele fișierul caută dacă fișierul nu există, se generează unavertisment există, segenerează nu dacă fișierul include_once Includerea de cod php (suport pentru modularizare) via : – structuri de control structuri include_path pentru a pentru include - sursă din fișierealte - l include o singură dată l include osingură și - l evaluează
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ caută fișierul sursă în directoarele predefinite specificate predefinite specificate sursă îndirectoarele fișierul caută require_once dacă fișierul nu există, există, dacă nu se emite fișierul o eroarefatală Includerea de cod php (suport pentru modularizare) via : – structuri de control structuri include_path pentru a pentru require - sursă din fișierealte - l include o singură dată o singură l include și - l evaluează
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ function } // corp... trimiteMesaj php.net/manual/ Func ț ii definite de ( $ php exped en / : = language.functions.php "" funcții , $ dest utilizator = "" , $ subiect valori implicite p arametri : = "Web" cu ) {
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ while $numar } function define } echo // if $numar return continue e ( $numar număr ( $numar " ( 'MAX' $numar $numar = ++; patrat 0 ; ; par, % , 10 2 < ( ) la * $numar deci MAX) ); $numar pătrat afișăm { ) este { ; // // // // // funcția pătratul numărul continuăm e incrementăm " număr . patrat de lui impar... maxim ridicare ( $numar cu numărul următoarea de la ) valori . pătrat " \ n " ; iterație
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ la PHP 5.6+, numărul variabilnumărul la PHP5.6+, deparametri eindicatde parametrii fidați referință pot prin numele funcțiilor suntconsideratenumele funcțiilor php.net/manual/en/ Func ț ii definite de php functions.arguments.php : funcții utilizator case – prefixați de - insensitive : & …
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ function infomagic } printf printf PHP_VERSION cu din serverul %s
.
" ( ( Func "Folosesc "
Sunt infomagic (); Web ț ii , le suntvizibile oriunde în program %s()
php_uname %s
.
" () { PHP %s
(), , __FUNCTION__ $_SERVER și execut , [ 'SERVER_SOFTWARE' de , linia __LINE__ pe %s
%d , __FILE__ ]); : );Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ function infomagic } printf printf PHP_VERSION cu din serverul Apache/2.4.41 (Unix) OpenSSL/1.1.1d PHP/7.4.2 (Unix)OpenSSL/1.1.1d Apache/2.4.41 mod_perl 4.9.189 Debian Folosesc Sunt %s
.
" ( ( Func "Folosesc "
Sunt infomagic (); infomagic Web /2.0.8 ț PHP ii , le suntvizibile oriunde în program %s()
php_uname %s
.
" - () - dev Perl/v5.16.3 dev () 3+deb9u2 (2019 3+deb9u2 7.4.2 { PHP și execut de pe de pe %s
(), , __FUNCTION__ linia Linux $_SERVER . - 11 15 din și debian - 11)x86_64 execut , [ 'SERVER_SOFTWARE' 4.9.0 /opt/ de , linia __LINE__ pe lampp - 11 cu %s
%d - amd64 #1 SMP#1 amd64 serverul / htdocs , __FILE__ / magic.php Web ]); : ); .Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } function // declare
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ $saluta $saluta $saluta }; printf De la ( ( ( = "Salut ' 'lumea' Tuxy function PHP 5.3 www.phptherightway.com/pages/Functional programare funcțională funcțională programare ' ); %s... ); ( $nume \ , n pot fi " , php $nume ) { definite : ); ); funcții // fără efectecolaterale // variabilă ș – i e.g. func , de closures ț tip - ii Programming.html anonime funcție
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ de laversiunea F unc în limbajul în limbajul ț concept asemănător cu asemănător concept ii le construcție funcțională disponibilă disponibilă funcțională construcție anonime JavaScript PHP php short 7 se pot se pot specifica prescurtat . 4 (lansată în 2019) 4 (lansatănoiembrie : funcții closures ( ECMAScript arrow functions 6 – ES6)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ $salută sleep $salută $salută // // // // header declare (pentru variabilă care declararea ( 2 are ( ( ( = ); ' 'lume' ( 'Content Tuxy strict_types corp, fn // un de se ( string prescurtată ' argument ); ); tip așteaptă se - funcție: type permite $nume = : 1 ); text/ 2 de a fn secunde... ): o unei tip plain (argument) int singură string => funcții ' Salut ); Salut printf // $nume // la trimitem expresie; verificare Tuxy lume anonime intrare => ( "Salut , corp ! [la 22 [la ! date ! [la 22 ! clientului și ' %s! strictă return ( "j întoarce - - - 02 02 m [la - - - 2021 01:38:01 PST]. 01:38:01 2021 Y 2021 01:37:59 PST]. 01:37:59 2021 ' a %s]. nu H:i:s text tipurilor int e \ n permis) neformatat T" " , , time de date ()));
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pentru de de detalii detalii la acces php privitoare de manipulare accesarea specifice matematice de manipulare : la prelucrare php.net/manual/en/ funcții predefinite funcții resurse criptografice sistemului la resurselor generale a conexiunile ș irurilor și a ș i bazelor a de de tablourilor conversie de lucru XML, PDF,JPEG,... de operare funcref.php de re de date caractere cu fi ț ea ș iere
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Ma abs(), mod(), abs(), is_finite bindec rand(), sin(), pow log() log10(), exp(), min() max(), round(), floor(), ceil(), tematice (), cos (), sqrt srand (), (), tan(), (), octdec php : is_infinite () php.net/manual/en/ () fmod : (), funcții predefinite funcții asin () dechex (), (), is_nan … (), , sinh … refs.math.php () , base_convert (), … , pi() , ()
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Ș iruri echo(), print(), echo(), PHP8: join(), split(), implode(), explode(), trim(), strcat strcmp strlen de (), (), (), ltrim str_contains caractere amănunte textelor: amănunte vizând procesarea str_replace chr php.net/manual/en/ strcasecmp php (), (), ord rtrim printf : funcții predefinite funcții : (), (), (), () substr (), (), str_starts_with str_ireplace sprintf strnatcmp refs.basic.text.php (), strstr () etc. () (), () etc. etc. () strtok (), strrev (), strpos str_ends_with () () etc. () (),… () Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Expresii conform conform preg_filter compatibile ereg www.php.net/manual/en/control (), PHP 8+ (2020): noua construcție PHPnoua construcție 8+(2020): regulate ereg_replace standardului php (), cu preg_grep cele : : funcții predefinite funcții din Perl (), split() etc. split() (), POSIX (), preg_match – PCRE: - structures.match.php www.pcre.org (), match preg_split () (),…
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ T ablouri array_count_values array_map array_push array_keys array_merge array_fill array_reverse array_slice : (), php (), (), php.net/manual/ (), array_combine (), (), array_reduce array_key_exists array_pop array_chunk array_intersect : (), funcții predefinite funcții array_multisort (), array_search () en (), () / () book.array.php array_shift () (), array_diff (), (), array_sum array_filter (), () (), (), …
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ function /* print_r $valori // // $punctaje } a se studia și pentru folosim }; return // filtrarea pe întoarce return baza ( = $valori function valoare_mai_mica_decat a array_filter funcția unor = obține unei $element [ o 7 expresie , ); valori funcții 8 php wiki.php.net/ , ( predefinită valorile $element 9 , < 10 ( $punctaje dintr $numar specificate , de : 7.5 mai funcții predefinite funcții tip - , ) un 3 use array_filter , funcție mici ; tablou 10 , rfc valoare_mai_mica_decat ( , $numar de 8.75 ( decât / $numar closures – programator , closure 4 () o ) ]; asupra { valoare ) { : abordare tabloului */ dată (aici: funcțională avansat ( cu 7 )); 7) punctaje ) ( Array [8] => 4 [8] =>3 [5]
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ în cadrul tablourilor (asemănător (asemănător cu în cadrultablourilor print_r // print_r $limbaje $mofturi $web fuziune În = ([ ( [ $limbaje PHP 'JS' = = ... – [ [ $mofturi similar 'Lua' 'C#' , 7 'PHP' . 4+ se poate folosi operatorul folosioperatorul 4+ sepoate , ); , ... ' Rust $web cu , ]; ... array_merge $web ' , , 'Scala' 'Java' ]); ]; ]; () ECMAScript ) ( Array ) ( Array avansat [4] => PHP [4] =>JS [3] =>Scala[2] =>Rust[1] => [0] =>Java [3] =>PHP [2] =>JS [1] =>C# [0] … Lua 2018)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Procesarea ctype_digit ctype_alpha ctype_upper ctype_punct php caracterelor (), (), ctype_xdigit (), () ctype_alnum : ctype_space funcții predefinite funcții : (), (), ctype_print (), ctype_lower … (), (),
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Dată & t getdate strftime checkdate date(), vezi și extensiile imp idate (), (), php () localtime : strtotime (), gmdate : funcții predefinite funcții (), () Calendar gettimeofday (), … , DateTime (), time() etc. (), time() , HRTime
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ V ariabile empty(), empty(), serialize(), serialize(), strval a se consulta și a se consulta (), PHP print_r isset php unserialize : (), unset() (), (), : funcții predefinite funcții var_dump php.net/manual/en/ () () book.var.php
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ F i ș f disk_free_space chdir is_dir file_exists delete(), rename(), copy(), file(), iere olosind de studiat și move_uploaded_file fseek fopen (), și (), (), (), directoare mkdir is_file tipul (), ftell php fread filesize php.net/manual/en/ de date FILE (), (), (), : (), (), feof is_readable rmdir funcții predefinite funcții disk_total_space fscanf (), : (), (), filetype () fclose (), tmpfile – fgets (), ca la limbajul C ca lalimbajul (), (), is_writeable refs.fileprocess.file.php () ftruncate (), fileperms () fwrite (), (), (), (), : fprintf fstat … … , stat() , (), (), ...
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ URL http_build_query() base64_encode() base64_decode(), urldecode - uri : php (), urlencode : funcții predefinite funcții (), parse_url ()
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ // // } foreach $ // header define } } if parse_str echo echo printf adresaWeb else procesăm divizarea fiecare ( $parametri { ( ( "Jucăria "Jucăria ( 'URL' "%s=%s ( ' și Content array_keys parametru ( are $ adresaWeb unui , șirul = [ ' numele http://undeva.info:8080/oferta/jucarii/produs/?nume=Tux&marime=17#oferta ' marime parse_url procesarea \ e nu - n URL type de bună " , e ( $componenta $ va interogare în : adresaWeb pe " ' text/ ] [ fi (" regulă... ' . query < (URL); componente $parametri stocat . 13 $parametri plain ) { ' ], \ ( componentelor în ' n $parametri query_string ); ) " , as ; tabloul // $ [ adresaWeb 'nume' conținutul $componenta [ ale ' marime unui $parametri ] ); . ". al ' tablou ] \ trimis [ n $componenta URL . " ") ; ) { - ului) asociativ clientului unui URL ]); va fi : text obișnuit ' );
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ // // } foreach $ // header define } } if parse_str echo echo printf adresaWeb else procesăm divizarea fiecare ( $parametri { ( ( "Jucăria "Jucăria ( 'URL' "%s=%s ( 'Content și array_keys parametru ( are $ adresaWeb unui , șirul = [ ' numele http://undeva.info:8080/oferta/jucarii/produs/? ' marime parse_url procesarea \ e nu - n URL type de bună " , e ( $componenta $ va interogare în : adresaWeb pe " ' text/ ] [ fi (" regulă... ' . query < (URL); componente $parametri stocat . 13 $parametri plain ) { ' ], \ ( componentelor în ' n $parametri query_string ); ) " , as ; tabloul // $ [ adresaWeb 'nume' conținutul $componenta [ ale ' marime unui $parametri ] ); . ". al ' tablou ] \ trimis [ n $componenta URL . " ") ; ) nume { - ului) asociativ clientului unui ș Jucari fragment query path port host scheme i are numele Tux. =Tux& =8080 =/oferta/jucarii/produs/ =undeva.info = a URL nume ]); marime =http e va =oferta î n n regul fi =Tux& : =17#oferta text ă obișnuit marime (17) (17) ' ); =17
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Prelucrarearesurselor nl2br(), json_encode highlight_string(),... show_source(), get_browser(), htmlentities php (), json_decode : funcții predefinite funcții (), htmlspecialchars Web (), (HTML, JSON) json_last_error (), strip_tags () : ()
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ $ // var_dump // $animals2 $ json animals " [ informații piesele Sheep " = json_encode (de) albumului = ( $ = [ animals privind " json_decode " , " codificarea " => on " Pigs variabilele , on ' Animals ( the $animals2 $ animals the ( Wing Three ( $ Wing json ' de de #1" folosite ); , Different ); $ #2" Pink date json // , // " codificăm Dogs decodificăm ]; ); Floyd interne Ones (1977) " ( )" , serializăm ], datele ↔ exprimate date JSON ) în JSON JSON în Unicode :
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ array(5) $ "Sheep {" string(191) $ } [4]=> [3]=> } [2]=> [1]=> [0]=> json animals \ string(10) [" array(1) string(16) string(19) string(19) ud83d string(27) \ { ud83d \ udc16 { " [" " "Sheep "Dogs " "Pigs \ "]=> ud83d \ udc11"," \ ud83d on on (Three the the \ udc37 \ udc16 " \ " Wing Wing ud83d Different on \ ud83d #2" #1" \ udc37 the Wing \ Ones)" udc16":"Pigs on #1","Dogs the Wing array(5) $animals2 } [0]=> [4]=> [3]=> } [2]=> [1]=> string(19) string(10) [" object( string(16) string(19) string(27) (Three #2"] \ ud83d " { stdClass Different \ " "Sheep "Dogs " udc15 "Pigs "]=> on on )#1 \ u200d (Three Ones)"}, the the (1) " " Wing Wing { \ ud83e Different #2" #1" \ uddba Ones)" ",
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Suport pentru operații criptografice extensii extensii utile password Sodium OpenSSL Hash CSPRNG amănunte amănunte la (funcții hashing php (operații de (de)criptare avansate (operații avansate de (de)criptare (generare (generare de numere pseudo (funcționalități (funcționalități vizează SSL/TLS)ce hash : funcții predefinite funcții php.net/manual/en/ _*() – funcțiile funcțiile – de tip de tip digest password ) refs.crypto.php - aleatoare _*() : – cazul PHP 7.2+) – la PHP 7+)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Suport ImageMagick Cairo Cairo GD viz – php.net/manual/en/ – prelucrări raster (GIF, JPEG, PNG): ând procesări procesări vectoriale/raster: php EXIF – conținutul grafic (raster/vectorial) procesări procesări : extensii extensii preinstalate funcții predefinite funcții – acces la meta acces multi refs.utilspec.image.php - format: format: - date JPEG date www.cairographics.org www.imagemagick.org libgd.github.io :
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Alte funcții Alteutile die(), eval(), exit(), sleep(), usleep(), time_sleep_until() usleep(), sleep(), exit(), die(), eval(), php_info(), php_check_syntax() php_info(), sys_getloadavg() uniqid(), php : : funcții predefinite funcții
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ acces www.phptherightway.com/#standard_php_library ArrayIterator la SplStack maniere SPL , SplQueue structuri de date definite: structuri php , ( FilesystemIterator Standard PHP Library standard de www : alte iteratori: iteratori: , SplHeap .php.net/ facilit , spl SplPriorityQueue , prelucrare RegexIterator ăț i ) avansat a etc. ,... datelor
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ clase: internaționalizare (i18n internaționalizare Internaționalizarea& localizareaaplicațiilor suport pentru traducerea mesajelor: traducerea pentru suport www.php.net/manual/en/refs.international.php NumberFormatter verificare lexicală ( IntlTimeZone php : alte MessageFormatter IntlCalendar – internationalisation spelling facilit ): ăț Locale Enchant i IntlDateFormatter Gettext avansat ): ): intl
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ în cazul PHP 7+, se pot folosi structuri de date eficiente structuri 7+, se folosi PHP în cazul pot Vector Alte extensiiAlte de bază preinstalate Deque www.php.net/manual/en/book.ds.php Collection php Map Pair SetPair : alte interfețe: interfețe: Hashable clase: Stack facilit Sequence Queue ăț i PriorityQueue avansat
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Swoole YAML Streams www.php.net/manual/en/refs.basic.other.php Parsekit – Alte extensiiAlte de bază preinstalate SeasLog – suport pentru suport acces acces la rețea:TCP,UDP, HTTP, GeoIP – lucrul cu fluxuri („șuvoaie”) de date („șuvoaie”) fluxuri cu lucrul php – – analizarea analizarea facilități pentrujurnalizare facilități – : localizare geografică localizare alte YAML YAML facilit opcode Ain’t Markup - ăț urilor PHP urilor i WebSocket avansat Language
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ www.php.net/manual/en/refs.fileprocess.process.php Eio pthreads , (unele disponibile doar pe sisteme sisteme disponibile doar pe (unele Linux) Ev , Controlulexecuției proceselor Expect , pht php , Semaphore , extensii extensii de interes Libevent : alte , facilit PCNTL , Shared , ăț POSIX Memory i , avansat parallel , Sync ,
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ facilitează facilitează realizarea deoperații asincrone de intrare/ieșire asincrone bazate pe evenimente rularea asincronă a codului se realiza poate asincronă acodului rularea Controlulexecuției proceselor via biblioteci suplimentare via biblioteci php exemplificare: : reactphp.org alte ReactPHP facilit ăț i – avansat neblocante neblocante – Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Execuția programelor php.net/manual/ php : en alte PHP CLI / features.commandline.php facilit din lini ăț a de i comand avansat ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ PHP www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/ și ca php modul - fpm e.g. ( FastCGI , php al unui server Web pe wiki.apache.org/ baza : Process Manager Process alte modulelor facilit httpd proxy_fcgi / php ăț ( Apache ) i – php avansat - fpm.org , NGINX)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ PHP 5.4+ oferă un server Webincorporat php.net/ php – php S features.commandline.webserver exemplu de invocare: exemplu localhost:8000 : alte facilit – t phpwebapp ăț i avansat /
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Inter via procesorul Lua V8js - + www.php.net/manual/en/book.luasandbox.php conectivitatea LuaSandbox – www.php.net/manual/en/book.v8js.php procesarea și rularea codului codului șirulareaprocesarea V8 php exemple exemple de extensii: (Google) folosit de (Google) : – alte interpretarea programelor Lua interpretarea programelor cu alte facilit tehnologii ăț Chrome i JavaScript / avansat platforme și Node.js
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pentru programareaobiectuală? Care - i suportuloferit de PHP
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ date paradigmă bazată concep pe bazată paradigmă C++ (1985), (1985), C++ exemple: exemple: (atribute, proprietăți) și proprietăți) (atribute, uzual, obiectele interacționează între ele interacționează obiectele uzual, ( object și reprezintă instanțe de și reprezintăinstanțe Smalltalk Programare obiectuală Programare obiectuală Python php - oriented : caracterizare (1990), Java (1995), C# (2000) Java (1995), (1990), (1972), programming tul cod Objective de (metode, proceduri) obiect clase - C (1984), – ) incluzând incluzând
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ (o variabilă de tip obiect conține o referință la un obiect obiect laun oreferință conține de variabilă obiect (o tip Suport pentru definireaclaselorvia și de instanțiereprin operatorul obiectele sunt tratate similarreferințelor tratate sunt obiectele php.net/manual/en/oop5.intro.php detalii detalii la și nuocopiea lui) php php.net/language.oop5 : clase new class
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ class } } public } public // public private private // proprietăți return $ metode this Student - function function $nume > $email $an p $ an this publice rogramare specificând o referințăspecificând curent laobiectul ; = { (date - $ // > ; ; unAn an seteazaAn furnizeazaAn specificarea ; - $this membre) ; e ste obiectual ( $ unei unAn () o pseudo { clase ) { ă - – variabil încapsularea ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ class } } public } public // public private private // proprietăți return $ metode this Student - function function $nume > $email $an p $ an this publice rogramare ; = { (date - $ // > ; ; unAn an seteazaAn furnizeazaAn specificarea ; - membre) ; obiectual ( $ unei unAn () { clase ) { ă – ) ( print_r $ $ $ // încapsularea stud stud stud instanțierea [email:Student:private] [email:Student:private] => [nume] =>Tux [an:Student:private] 2 => Student Object - - = > > ( nume seteazaAn $ new stud Student ); = unui ' Tux ( obiect 2 ' ; ); ();
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Ca laC++,m pot fi pot embrii proteja priva publici php declarați ca fiind declarați ca – ț ț proprietăți sau metode metode sau proprietăți i i : ( ( ( protected private clase public ) ) ) –
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } class ); $ // $ // $ altStud altStud altStud [ apel apel } public } public private 'TW' return $ this StudentDestept de de => - - function function = > > - $note metodă metodă > 10 seteazaNote seteazaAn new ( note p array , rogramare 'IP' ; StudentDestept = ) => furnizeazaNote seteazaNote din din ( $ // array this notele 9 ] ( clasa clasa 2 extends - ( ); > ) note $n obținute derivată de ; ; obiectual ( bază Student $n (); () ) { { (proprietate) { ă – mo ș tenirea
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } class ); $ // $ // $ altStud altStud altStud [ apel apel } public } public private 'TW' return $ this StudentDestept de de => - - function function = > > - $note metodă metodă > 10 seteazaNote seteazaAn new ( note p array , rogramare 'IP' ; StudentDestept = ) => furnizeazaNote seteazaNote din din ( $ // array this notele 9 ] ( clasa clasa 2 extends - ( ); > ) note $n obținute derivată de ; ; obiectual ( bază Student $n (); () ) { { (proprietate) { ă ) ( print_r – [email:Student:private] [email:Student:private] => [nume] => [an:Student:private] => 2 [note:StudentDestept:private] StudentDestept StudentDestept Object mo ) ( => Array [IP] => 9 [TW] => 10 ( ș $ altStud tenirea );
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ destructorii constructorii Metode speciale: sunt php sunt denumi : numi clase ț i ț __construct() i __destruct()
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ www.php.net/manual/en/language.oop5.paamayim s cope Accesarea proprietăților/metodelor r statice, constantesau suprascrise esolution o perator php : :: ( Paamayim clase Nekudotayim - nekudotayim.php )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Accesarea proprietăților/metodelor statice, constantesau suprascrise parent self php – – clasa curentă clasa părinte : :: clase
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ class declare $ $ } instrument Web de testare: stud stud // public private private // de la versiunea PHP 7.4 (2019) se poate specifica explicit explicit se poate specifica de laversiunea PHP7.4 (2019) etc. proprietăți - Student = > tipul de date al proprietăților definite definite de oclasă de date alproprietăților tipul nume ( new string string int strict_types $an Student = cu { $nume $email ; true tip ; = (); ; 1 ; ); sandbox.onlinephpfunctions.com Student property to bool assign Cannot error Fatal :: $ nume : Uncaught of type string type of TypeError :
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pot fi accesate fără a fi nevoie de instanțierea clasei deinstanțierea afi nevoie accesate fără fi pot www.php.net/manual/en/language.oop5.static.php Proprietățile sau metodele cu sau metodele declarate Proprietățile pentru exemple, a se studia exemple, pentru php : clase static
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ S în clasa copil (specificată (specificată copil în clasa e permit orice clasă având măcar o metodă abstractă avândmăcar ometodăabstractă orice clasă metodele abstracte trebuie implementate implementate trebuie metodele abstracte clasele abstracte nu pot fi fi clasele abstractenupot instanțiate clase este consideratăabstractă / metode php abstracte cu : clase extends declarate cu declarate ) a ) abstracte clasei abstract
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ interface // } public // public // // interfața S furnizează cu setează pecificarea amănunte la valoarea function function iMacheta privind o variabilă reprezentarea ei oferaReprez setVar în o { metodelor machetă php.net/manual/en/language.oop5.interfaces.php cadrul de o ce ( php $nume va machetei clas fi machetei de ( substituită $macheta , : vizualizare $var ce ă (similarJava) interfețe vor ); ); fi ulterior ( template ) implementate
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ class // } aspecte mai avansate: // clasa } public } public private tablou return } foreach $ this Macheta $macheta // implementând substituim function function - $variabile > asociativ $macheta variabile ( $ this implements = oferaReprez setVar - str_replace > în cu [ = variabile $nume ; array interfața machetă variabilele ( $nume iMacheta ] (); = www.phptherightway.com/#templating as $var ( ( $macheta numele '{' $nume , $var ce . ; $nume { trebuie ) { variabilelor => ) { . $val '}' înlocuite , $val ) { , cu $macheta cu valorile valorile ); lor lor
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ php www.php.net/manual/en/reserved.interfaces.php : interfețe & clase predefinite & clase interfețe IteratorAggregate ArrayAccess Traversable Serializable Throwable Generator Closure Iterator
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ php } Iterator // // // exemplificare: abstract abstract abstract abstract abstract : în metode interfețe & clase predefinite & clase interfețe clasa extends public public public public public ce ce trebuie implementează Traversable interfața boolean void void scalar mixed scrise Iterator rewind next current key valid { de ( interfața ( void ( programator void void ( ( void void ) ) ) ) )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ interfețe, funcții, metode, metode, extensii interfețe, funcții, un program PHP poate obține date referitoare la clase, laclase, referitoare obține date PHP poate un program php.net/manual/ ReflectionClass Acces la informații vizândla informații oclasă: Acces php : introspecție en implements / book.reflection.php – reverse engineering Reflector
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ printf // $clasa $clasa $clasa afișăm Clasa ReflectionClass și e ( "
Clasa = declarată - - și > > new StudentDestept informații getFileName getName e declarată ReflectionClass < în ::__ em (), despre fișierul în var_export >%s ' 'name' (array( ' > StudentDestept introspecție < specificată tt extinde ( $clasa >%s busaco >.
" getParentClass ' ); Student , /html/ php ', )) ', )) (), / introspect.php 1 ), . Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ colecție de metode ce pot fi refolosite în cadrul altor clase de fi refolositeîncadrulaltor ce colecție metode pot www.php.net/manual/en/language.oop5.traits.php php concept preluat de la Self preluatlimbajul concept : trăsături de clasă ( clasă de trăsături oferit dePHPoferit 5.4+ Trait traits )Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ astfel, se oferă suport pentru pseudo pentru se suport astfel, oferă față de interfețe, oferă implementări implementări față ale metodelor, de interfețe, oferă considerat cașablon ( aspecte aspecte formale: php : trăsături de clasă ( clasă de trăsături nu doarlor signaturile scg.unibe.ch/ Trait template C++) uneiclase al research - moștenire moștenire multiplă traits / traits )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } trait } trait // } trait } public } public } public trăsături Colorare Mutare Rotire function function function (comportamente) { { { mutaLa roteste coloreaza ( ( $unghi $x ( $culoare asociate , $y ) ) { { // // ) unor implementează mută { // realizează figuri la alte geometrice coordonate colorarea rotirea 2D
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ class } abstract } } public use // } public echo folosește Dreptunghi Colorare ( function function class 'Am trăsăturile desenat , Figura Mutare deseneaza transforma extends { ' , . Rotire dorite get_class Figura () () ; { { { // // // ()); o clasa poate transformare figurilor fi colorat, geometrice specifică mutat, rotit
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } final // } public // const // use // clasa declararea un specificarea class Mutare cerc Cerc PI function = Cerc poate 3.1415265 , nu Colorare unei extends mai unei calculeazaArie fi constante mutat poate metode ; ; Figura și fi colorat extinsă proprii proprii { () {
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ $ $ $ $ // $ unDreptunghi unCerc unCerc unDreptunghi unCerc instanțiem PHP Fatal error: Callto undefined PHPmethod Am desenat - - = > > php roteste deseneaza new 2 figuri: - : Cerc = > Cerc deseneaza trăsături de clasă ( clasă de trăsături new (); in /home/ (); un (); Dreptunghi cerc (); dMdWgn și un // (); va dreptunghi cauza / prog.php emiterea Cerc traits on line47 :: roteste unei ) erori ()
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ altele la altele O clasă are asociate proprietăți speciale („magice”) speciale O clasăareasociate proprietăți www.php.net/manual/en/language.oop5.magic.php php : proprietăți speciale proprietăți ce pot fi suprascrise fi ce pot __construct () __destruct () __toString () __get () __set()
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ O biectele O biectele se pot php compara pot fi pot : obiecte „ clonate folosind ” via operatorul clone ===
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ get_class is_subclass_of class_exists method_exists get_parent_class Func de mo pentru din care instan ț ii de ș ț () ă a tenire un va () provine testează unei manipulare anumit () () returna testează determin () dintre furnizează clase php un obiect numele existen anumit două dacă : ă obiecte dacă a specificat clasa clase claselor există ț a unui obiect exist unei părinte obiect o ă clase metodă o ș rela i obiectelor , ț i e
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ detalii detalii la www.php.net/manual/en/language.exceptions.php similare celor din Javasimilare celor php clasa try catch : Exception excepții throw
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Folosite pentru coliziunilor de Folosite pentru evitarea nume și declarare cu declarare pentru efectuareade php namespace : spații de nume spații de (prima linie deprogram)(prima linie alias - uri
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Folosite pentru coliziunilor de Folosite pentru evitarea nume și exemplu: exemplu: de aprofundat de aprofundat declarare cu declarare namespace pentru efectuareade php namespace www.phptherightway.com/#namespaces : spații de nume spații de Facebook (prima linie deprogram)(prima linie ; // Facebook SDK for PHP // Facebook SDK alias - uri
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ class namespace același același de fi spațiu poate definit în fișiere nume multiple Folosite pentru evitarea coliziunilor de nume și GenSVG pot exista pot exista ierarhii de (sub Proiect { ... }; { ... pentru efectuareade \ php Modul \ Submodul : spații de nume spații de ; Proiect - )spații denume )spații \ Modul alias referire cu \ Submodul - uri \ GenSVG
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Folosite pentru coliziunilor de Folosite pentru evitarea nume și utilizare prin utilizare pentru efectuareade php use use Proiect : spații de nume spații de (eventual specificând un specificând (eventual \ Modul \ Submodul alias - ; uri alias )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Folosite pentru coliziunilor de Folosite pentru evitarea nume și use utilizare prin utilizare Illuminate use pentru efectuareade \ Foundation php Facebook use use Proiect exemple exemple concrete: : spații de nume spații de (eventual specificând un specificând (eventual \ \ Exceptions Authentication \ Modul \ \ Handler Submodul \ AccessToken alias as ExceptionHandler - ; uri ; alias ) ;
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } function namespace $valoare ... Folosite pentru evitarea coliziunilor de nume și construcțiile care nu aparțin niciunui spațiu de nume denume niciunui spațiu aparțin care nu construcțiile definit sunt considerate ale spațiului de nume global denume considerate ale spațiului definit sunt cosh = ProiectWeb \ cosh () pentru efectuareade { (...); php // ; specificarea // apel : spații de nume spații de de funcție unei predefinită funcții alias proprii (din - uri spațiul global)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ vizândinteracțiunea Web? Care suntfacilitățile
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ î n $_SESSION[ ] $_SESSION[ tablouri Datele $_GET[ ] $_GET[ (con $_REQUEST[ ] $_REQUEST[ $_POST[ ] $_POST[ $_COOKIE[ ] $_COOKIE[ ț inutul php de – asociative datele – la : datele lui – client ( client interac datele – $_GET – transmise datele cookie referitoare la referitoare expediate predefinite browser , $_POST ț primite - iune urile prin receptate ) se reg ș prin i web de laclient metoda metoda sesiun $_COOKIE ( ș POST i globale ă ile GET sesc Web ) ):
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ $_SERVER[' $_SERVER[' $_SERVER[' $_SERVER[' www.php.net/manual/en/reserved.variables.server.php oferă informații privind serverul Web informații privind serverul oferă REQUEST_METHOD php HTTP_USER_AGENT HTTP_REFERER Alte PHP_SELF : variabile interac $_SERVER[ ] $_SERVER[ '] indic '] globale – ț ă '] iune URL numele '] – – metoda folosită metoda HTTP detalii despre client - ul utile: web referind resursa referind script - ului PHP
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ $_ENV[ ] $_ENV[ $_FILES[ ] $_FILES[ www.php.net/manual/en/features.file – date – php Alte datele de spre : variabile interac despre mediu fi vezi exemplul din arhiva ș globale l ierele ț ( aferentă prelegerii iune environment primite utile: web - upload.php ) prin de execuție upload
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ formular type type type = = = = " " "text" "text" afiseaza.php submit Web name name modelat " value = = " " " varsta nume method = în "Trimite" HTML " " /> /> = "post" -- > /> >
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ?> formular ( ( type type type "Numele "Nu fiecare din formularnume decâmp reprezintă o cheie a o cheie a tablouluiasociativ = = = = ați " afiseaza.php " "text" "text" afiseaza.php submit Web specificat [ " este" nume name name modelat " value . " ]) $_REQUEST = = numele!" invocat " " " varsta nume method = în "Trimite" HTML " " prin /> ); /> = "post" [ -- " nume POST > /> $_REQUEST [ ] $_REQUEST > " ]); $_GET sau $_POST ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ [, bool bool Stabilirea $ transf_securiz [, string [, php string setcookie unui $ val : $ cookie cale = false [, oare cookie = "" [, ( = "" [, string bool - string via uri int $ n $ $ doar_http u func timp_expirare me – $ dom _cookie creare ț ia e n iu = false ]]]]]]) = : setcookie = "" = 0 () bool
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ setcookie // setcookie // [, nepersistent persistent bool bool Stabilirea $ transf_securiz ( ( 'autentificat' ' [, culoare – string [, stabilim ca acest php – string de setcookie unui ' $ , ce? val : 'tan' $ cookie cale = false [, oare , cookie ' , true time = "" [, ( = "" [, string ' ); () bool cookie - string + via uri int 60 $ n $ $ doar_http u func * timp_expirare me – $ 60 să expirepeste 10zile dom _cookie creare * ț 24 ia e n * iu = false ]]]]]]) = : setcookie 10 = "" ); = 0 () bool
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ detalii detalii la eventual, php setcookie www.php.net/manual/en/function.setcookie.php se Eliminarea anuleaz : celelalte cookie ( $ nume_cookie ă valoarea atribute - uri unui – , cookie ș expirare ale "" i timpul , 0 cookie , "/" : , ; "" - ); ului
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ background style -- culoarea stabilită anterior de tip tablouasociativ Cookie { > php - de : ul e e dată $_COOKIE - uri de ( – accesat valoarea $_COOKIE – consultare [ 'culoare' exemplelor PHP ) ca o cookie vezi arhiva [ ' ]; nume_cookie - ?> variabil ului ă ' ]
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ session_register Managementul sesiunilor Managementul if session_start else (! detalii detalii la isset { $_SESSION $_SESSION ( $_SESSION () , session_id php.net/manual/en/ php (); // [ [ inițiem : ' ' accesari accesari sesiuni sesiuni [ ' () accesari , session_ o : sesiuneWeb ' ' func ]++; ] = ' ])) book.session.php 0 web ; } unset ț { iile } session_start () , session_destroy accesari variabila sesiunii ata ș () at , ă () Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ SessionHandler } public public public public public public public bool bool bool bool string string bool Managementul sesiunilor Managementul close destroy gc write open read create_sid implements ( int php.net/manual/ ( ( ( ( string string string void $ php ( maxlifetime string ( ) void $ $ $ : SessionHandlerInterface session_id session_id save_path bool : $ sesiuni sesiuni session_id ) : string en ) : / int book.session.php , ) , : string : string clasa string ) : web bool $ $ session_name session_data SessionHandler // elimină { vechile ) ) : : bool bool sesiuni
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ (în loc (în loc de) pauză
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Cum Cum pot fi accesate bazelede date dinPHP?
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ MongoDB MongoDB de S servere uport – MySQL clasele conexiunile pot fi persistente fi pot conexiunile PostgreSQL nativ SQLite / tehnologii / MongoDB MongoClient MongoCursor MongoClient MongoDB MariaDB php pentru – clasa – etc. func : bd – SQLite3 de o ț clasa iile multitudine baze pg_*() mysql de date: i
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ preluarea actualmente, actualmente, Func conectare selectare raportare ț ii/ execu metode rezultatelor la server: ( utilizare abordare depreciată abordare ț de ia php unei erori pentru mysql_connect multe ) : î interog baz : ntr bd mysql_errno - ă un acces altele de date: – ă tablou mysql ri : … mysql_query la MySQL () – () mysql_select_db : , , mysql_fetch_array eliminată eliminată în PHP 7 mysql mysql_error _ / p connect () MariaDB () () () () Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Scop documenta : acces php aborare asigură securitatea și performanța asigură securitatea facilitează facilitează compatibilitate din usor : ț ii bd disponibile procedurală sau obiectuală procedurală programele ș – ment i flexibil extensia enabilitatea cu API la la MySQL www.php.net/mysqli PHP5 - ul mysqli MySQL codului + / MariaDB
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ini ț procesarea ierea interog php unei î ă nchiderea ri conexiuni : SQL r ă bd Metode spunsului – – query () conexiunii extensia cu importante etc. serverul – , fetch () prepare ( ) – close ( ) mysqli MySQL , : fetch , execute () _ assoc – mysqli ( ) ( )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Enter password:********** ( Query OK, 0 rows affected (0.001 sec) (0.001 affected rows 0 OK, Query OPTION GRANT WITH DROPON [ MariaDB 10.4.11version: Server Welcometo themonitor. MariaDB end Commands with ; or consola care Pentru va )$ programe mysql students mysql asigur î nceput ]> ]> disponibilă pe pe serveruldisponibilă - GRANT SELECT,GRANT INSERT, UPDATE, CREATE,DELETE, u . a * root php TO acces , ; PHP vom - MariaDB Source distribution Source MariaDB ' - tux@localhost p mysql : – autentificat crea bd asupra un – exemplu cont ' bazei IDENTIFIED BY IDENTIFIED clienților clienților de utilizator MariaDB de date ' – p@rola students în acest în acest caz, \ g. MariaDB ’
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ | Field | Type | Null | Key | Default | Extra | Extra | Default | Key | Null | Type | Field | + + | | | | + ------age id year name o aplicație Web de administrare o aplicație + | | NULL | PRI | NO | unsigned int(11) | | | | | NULL | NO | | varchar(50) + + Folosind ------tinyint enum ('1','2','3') | NO | | NULL | | | NULL | | NO | ('1','2','3') (3) unsigned | NO | | NULL | | | NULL | | NO | unsigned (3) clientul php având : bd mysql + + + ------structura – î + + + n exemplu ------linia + + + cre ------de : ă comand m tabela + + + ------auto_increment ă students sau + | + +
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pentru administrare pentru facilă, recurgemWeb la instrumentul alternativă: vizualizarea Adminer phpMyAdmin /alterarea – www.adminer.org structurii – www.phpmyadmin.net tabelei create
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ inserarea de înregistrări exportul datelor
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ comenzi comenzi SQL interogărilor manuală manuală de execuția istoricul
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } if $ // } if // mysql die formulăm die instanțiem (!( ( mysqli_connect_errno $ rez ( ( 'Conexiunea 'A = survenit = new $ mysql o php obiectul interogare mysqli o - > : a eroare query bd eșuat...' mysqli ( ' localhost și – ( () () ) la 'select o extensia ); interogare' executăm { ' , ' name tux ' , 'p@r0la' , ); year mysqli from , ' students students ' ); ' ))) { Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } if $ // } if // mysql die formulăm die instanțiem (!( ( mysqli_connect_errno $ rez ( ( atenție probleme la de securitatesurvenice pot 'Conexiunea 'A = survenit = new $ mysql o php obiectul interogare mysqli o - > : a eroare query Parolae dată „înclar”! bd eșuat...' mysqli ( ' localhost și – ( () () ) la 'select o extensia ); interogare' executăm { ' , ' name tux ' , 'p@r0la' , ); year mysqli from , ' students !!! students ' ); ' ))) { Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } while // echo // // $ // echo mysql închidem echo // rezultatele (cod generăm coloană ( ( ( '' '
' $ HTML - ( inreg > '- Studentul close ' este o ); conexiunea a ); sunt listă în = tabelei (); $ stil în rez disponibile numerotată anul spaghetti - > ≡ fetch_assoc ' cheie ' . cu . $ $ inreg inreg serverul a – într cu tabloului [ practică ' [ name ' datele - year un ()) MySQL tablou { ' ' ] ] . . despre nerecomandată!) '
' / MariaDB asociativ ); studențiDr. Sabin Buragaprofs.info.uaic.ro/~busaco/ aspecte aspecte pragmatice în În practică, se recurge la unstratde abstractizare serecurge În practică, DBAL a accesului la sistemul sistemul la de stocare a accesului – PDO DataBase abordare uzuală: abordare ( PHP Data php tutorialul : Abstraction bd Object phpdelusions.net/ s ) Layer pdo
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ]; $opt // $ // $ $ $ $ $ // dsn charset pass user db host opțiuni stabilirea datele PDO // PDO // PDO // conexiunea rezultatele erorile ======[ :: :: :: " ATTR_PERSISTENT ATTR_DEFAULT_FETCH_MODE ATTR_ERRMODE mysql: 'p@r0la' de ' '127.0.0.1' ' students tux = vizând 'utf8' sunt conectare numelui ' ; php php.net/manual/ host vor ; raportate e ; maniera // ' persistentă ; ; fi atenție: = sursei : $ disponibile host la bd serverul de ca ; de dbname parola conectare – excepții date: extensia într => => de en e = DSN - PDO true baze specificată $ / un book.pdo.php db tablou ; :: ( charset => Data de ERRMODE_EXCEPTION PDO date Source asociativ „în pdo = :: MySQL $ FETCH_ASSOC charset clar”! Name / MariaDB " ; ) , ,
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ }; } try $ // year catch preluăm echo } if $ // $ { sql pdo pregătim ( } while $ echo // sql = = ( ...și "Eroare: $_REQUEST = PDOException $ - new > pdo de ( execute $ '
' o row comanda la afișăm - PDO > prepare clientul . = " php $ . $ row ([ $e ( sql $ [ (coloana ' $ dsn year - > year [ - $e SQL ' > getMessage Web name : ( fetch ' , WHERE SELECT ) ' bd $ ] { user ])) ? parametrizată anul ' $_REQUEST ] tabelei { ()) . – , ' { $ e year de year pass // extensia în (); ...preluăm studii // e anul = // ste , comanda , ? name mesajul $opt ORDER [ cheie ' ' (implicit: year . ); $ , row age fiecare // ' ] a SQL instanțiem excepției BY : [ tabloului ' FROM 2 year pdo ; 2) age poate înregistrare ' ] ' ); . students '
' survenite asociativ) fi un executată? obiect ; găsită PDODr. Sabin Buragaprofs.info.uaic.ro/~busaco/ https://profs.info.uaic.ro/~/busaco/php/pdo programului PHP invocat PHPinvocat programului Un posibil rezultat oferit de oferit execuția rezultat Un posibil Margaret Hamilton e Hamilton Margaret Grace e Pinguinesscool Tuxy php Hopper : bd e î – n anul 2 n anul arhiva aferentă prelegerii extensia de studiat exemplulde studiat din î n anul2 î n anul2 via unURL pdo - test.php?year=2 precum
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Uzual, peste DBAL se vaputea folosi o soluție ( i.e. de tip framework Doctrine ORM RedBeanPHP Propel – – Object , componentă,bibliotecă,…) www.doctrine php exemple: exemple: – propelorm.org – - redbeanphp.com : Relational bd - project.org Mapping avansat
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Instrumente utile pentru dezvoltatoriiWeb?
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ acces management de instrumente la validare MV* șidiverse șabloane deproiectare autentificare baze de date și filtrare Facilit cookie (ORM, DAO, (ORM, + : controlul framework a datelor ăți - uri și uri : accesului ActiveRecord sesiuni de intrare - avansat uri Web ,…)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ extensibilitate extensibilitate suport pentru servicii Web servicii Web și API pentru suport machete machete de prezentare adatelor transfer asincron de date (Ajax, Web transfer asincronde Web date (Ajax, suport pentru performanță performanță pentru suport instrumente gestionate gestionate cu – e.g. , module create de programator și module create de programator, Facilit : utili framework ăți ta : rul - uri REST/ uri – Composer i.e. – templating caching Socket - avansat uri GraphQL )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ program . php flux uri instrumente caching routing de activități realizate de un security view : framework troller cation appli con framework - - - avansat uri libraries Web helpers plugins models others
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Symfony Laminas instrumente – symfony.com PRADO (ex CodeIgniter Yii - Zend Framework CakePHP FuelPHP Laravel – Phalcon – www.yiiframework.com Nette www.pradoframework.net + Symfony : – – – – – – framework laravel.com codeigniter.com fuelphp.com nette.org cakephp.org phalcon.io ) Flex – docs.laminas.dev – flex.symfony.com - avansat uri
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ └─── ├─── ├─── ├───Libraries │ │ ├─── ├───Language ├───Helpers ├───Filters │ └───Seeds │ ├───Migrations ├─── ├─── │ └───Boot ├─── Models └─── Database Controllers Config └───errors Views ThirdParty └───html ├───cli ro en instrumente a cu un cu un : unei framework structura codeigniter.com/docs framework aplicații CodeIgniter de Web directoare axat - avansat uri dezvoltate 4 pe MVC
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ └─── ├─── ├─── │ │ │ ├─── ├─── │ │ ├─── ├─── │ │ ├─── │ │ │ │ │ │ │ │ │ ├─── tests storage server.php └─── ├─── ├─── resources public └─── ├─── database config └─── ├─── bootstrap └─── ├─── ├─── ├─── ├─── ├─── ├─── ├─── ├─── app User.php Services Providers Http Handlers Exceptions Events Console Commands views lang assets seeds migrations autoload.php app.php instrumente a unei aplicații a unei Webaplicații dezvoltate : framework via structurade directoare laracasts.com/skills/php framework laravel.com/docs/ - - ul avansat uri Laravel
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ instrumente un cadru de lucru Web minimalist Un micro - framework : micro - framework reprezintă avansat - uri
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ dezvoltarea Web dezvoltareaWeb instrumente deseori, axat asupra unui singur aspect vizând aspect singur deseori, axat unui asupra un cadru de lucru Web minimalist nu include, uzual, facilități sofisticate uzual, facilități nu include, Un micro – e.g. - framework : , crearea unuiAPI, , micro - framework reprezintă microserviciu avansat - uri ,…
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Fresh Squeezed Fresh Squeezed instrumente Fat Slim Leaf Siler Lumen - Free Limonade Flight – PHP – www.slimframework.com siler.leocavalcante.dev : – – micro fatfreeframework.com – – lumen.laravel.com leafphp.netlify.app flightphp.com – github.com/ - framework yesinteractive avansat - uri / fsl
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ www.phptherightway.com/#dependency_management Managementuldependențelor instrumente dintre biblioteci și pachete getcomposer.org C omposer : pachete avansat
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ { } Meta " }, " " " " " repositories require authors license version name { "organizație/pachet2" "spațiu " php " type - datele + dependențele de alte (versiuni de) pachete dede) pachete datele +dependențele (versiuni alte " (alte valori: " : " " " " : "organizație/pachet" " : : : - : sunt specificate specificate în fișierul sunt : " de { [ "1.3.74" [ ^ " "LGPL se recurge la { 5.5 composer - " nume/ " : name [ || ^ - 7.0" 2.1 altpachet git // " : sursa - , " " only" , vcs , Tuxy // : " " url versiunea // * Composer , " pear , versiunile de " " " "GPL , : , : "role" " " unde http://packages. ~ , 2.0" package - 3.0 curentă : poate , " // - // PHP Developer or alt versiunea - later" ) pachet fi composer.json necesare a preluat pachetului some ], " // propriu } dependenței licența ], pachetul . execuției where // avansat autor(i) de " } utilizare codului ] externe
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Pachetele Pachetele înarhive încapsulate sunt instrumente pot fipublice/private pot : pachete PHAR ( PHP Archive PHP avansat ) și )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Pachetele Pachetele înarhive încapsulate sunt depends install show – – instalare inclusiv adependențelor instalare locală/globală afișarea pachetelor ce depind de un pachet specific deun pachet ce depind afișarea pachetelor help instrumente – afișarea afișarea tuturor disponibile pachetelor php remove update search – pot fipublice/private pot oferirea oferirea de informații de ajutor unde composer.phar – – – actualizare pachete actualizare de eliminarea eliminarea pachetelor căutarea unui căutarea pachet comandă …și altele : poate fi: pachete comandă PHAR ( PHP Archive PHP avansat ) și )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Pachetele publice se pot prelua de pe Web de la Packagist instrumente – depozit de pachete ( packagist.org : pachete repository avansat )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ PEAR PE ( CL PHP Extension and Application Repository Application and ExtensionPHP Managementuldependențelor instrumente dintre biblioteci și pachete ( PHP Extension alternativă alternativă extensii extensii de oferite terți pear.php.net pecl.php.net + – Community mai veche: : pachete : Library avansat ) )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ server Web + PHP + server(e) de dedate Web + PHPbaze + server(e)+utilitare server M edii instrumente pre - configurate : medii dedezvoltare pentru dezvoltare Web
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ MySQL diverse configurări www.apachefriends.org Apache cu suport pentru pentru cu suport de sisteme Web www.ampps.com (extensii) instrumente XAMPP AMPPS / MongoDB + PHP 7 + … : medii dedezvoltare
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ instrumente Redis de + unelte administrare WinNMP Nginx + : – PHP medii dedezvoltare winnmp.wtriple.com 7 + 7 M ariaDB +
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ m edii AWS disponibile direct în navigatorul Web disponibile directînnavigatorul de dezvoltare (și pentru) PHP„în nori” (și pentru) de dezvoltare Cloud9 instrumente , Codenvy , Koding , REPL.it , …
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ editarea și execuția instrumente PhpFiddle Ideone online : – – execuție online execuție ideone.com phpfiddle.org a programelor PHP a programelor
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Editarea și execuția pentru testarea rapidăa a pentru codului, se considera: PHP instrumente Sandbox PHPTester – sandbox.onlinephpfunctions.com online : execuție online execuție – phptester.net a programelor PHP
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ instrumente de pentru teste vizând bazele de date relaționale, pentru dedate vizând bazele teste de studiat și de studiat experimenta www.databaseanswers.org/data_models/ și/sau și/sau inclusiv SQL Fiddle Industry t DB SQL Zoo : Fiddle execuție online execuție - specificData – – sqlfiddle.com – sqlzoo.net www.db - fiddle.com Models
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Generarea automată adocumentației unei aplicații github.com/ instrumente phpDocumentor ziadoz phpDox Daux / awesome : – – – documentare phpdox.de daux.io www.phpdoc.org - php#documentation
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ @ @ @ @ @ @copyright @ @ @ deprecated since todo see license version category author Marcaje (adnotări) speciale PHP:în comentariile speciale (adnotări) Marcaje instrumente docs.phpdoc.org/references/ @ @ @ @param @ @ @ @global @var inheritdoc throws return subpackage package method : documentare phpdoc / @ @ @ @ @link @ @ @ @ property property property internal used uses source example - by - - write read
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ instrumente pentru descoperirea de greșeli de programare ( de degreșeli programare descoperirea pentru ( verificarea adoptării unor stiluri de stiluri redactare adoptării unor verificarea coding Analiza github.com/ determinarea de metrici standards complexitate, linii de cod,… complexitate, rea statică acodului exakat : analiza ), corectare automată ( automată corectare ), / php - static rea - analysis ( codului metrics - sursă PHP - tools ): fixers - sursă bugs ), ),
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ PSR7: PHP instrumente PSR4: PSR1: PSR13: PSR13: redactate de PHP( FIG HTTP Standards instrumente Autoloading Basic PSR HypermediaLinks Message Coding 1 2: Recommendations PSR15: Extended : : PHP_CodeSniffer Interface Standard analiza Standard HTTP Handlers HTTP Framework … CodingGuide Style , PSR14: , , , PSR11: , rea PSR6: PSR3: – , codului www.php Event Dispatcher PHP Caching Logger ContainerInterface Interop , - CS avansat - - Interface Fixer fig.org/psr/ Interface , Group - sursă ) , , ,
Dr. Sabin Buraga, profs.info.uaic.ro/~busaco/ PSR The closing instrumente ThereMUST space beone afterthe control structure keyword. All filesPHP MUST use the only.Unix LF ending (linefeed)line All PHP reservedkeywords MUSTand types bein lowercase. Visibility MUSTVisibility declaredbe on all propertiesand methods. 1 ThereMUST NOT bemore thanonestatement perline. 2: Lines SHOULD NOT be longerthan 80 characters. Extended ?> tag MUST omittedbe from filescontaining only PHP. www.php Coding StyleGuide : analiza - fig.org/psr/psr rea codului – - exemple 12/ - de reguli: sursă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ instrumente rapoarteoferite : analiza de phptools.online rea codului /php - checker - sursă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ParaTest altele la altele SimpleTest (testare paralelă) Codeception instrumente github.com/ Peridot Peridot PHPUnit – atoum github.com/ – peridot ziadoz – – – – codeception.com atoum.org phpunit.de github.com/ - / php.github.io simpletest awesome : testare - / brianium php#testing simpletest avansat / paratest
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ github.com/ XHGui Xdebug Z - PhpBench Ray fragmentelor de care se lent cod execută fragmentelor (bazat pe pe (bazat Profiling extension – ziadoz instrumente www.zend.com/en/products/server/z Tracy – / awesome XHProf github.com/ – for PHP analizarea analizarea și raportarea – tracy.nette.org ) - – php#debugging github.com/ – phpbench xdebug.org/ : testare / phpbench perftools docs - and avansat / - profiler - profiling ray / xhgui
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ github.com/ instrumente PHPCI ziadoz Sismo CircleCI – / awesome github.com/ – : sismo.symfony.com integrare continuă – circleci.com - php#continuous dancryer / phpci - avansat integration
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ generics limbaj de programare pentru HHVM, extinzând extinzând PHP HHVM, pentru deprogramare limbaj facilități: dedate facilități: tipuri ( explicite scop: creșterea productivității dezvoltatorului Web dezvoltatorului productivității creșterea scop: , expresii expresii , Hack λ , programare asincronă ( programare (Facebook, din2014) (Facebook, hacklang.org extensii type annotations async avansat ) și ) altele ),
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ lipsa suportului nativ pentru nativ lipsa suportului inconsistență mulți ani: lipsa unei specificații a specificații ani:lipsaunei limbajului formale mulți lipsa suportului nativ pentru lipsa suportului actualmente: actualmente: însă posibil via extensii însă viaposibil extensii ca – e.g. critici majore critici , foreach github.com/ , nume de funcții predefinite defuncții , nume Unicode php multi pthreads / php (exceptând PHP7+) (exceptând - - langspec threading etal. ,
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ PHP Sadness critici majore critici – phpsadness.com
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ce „adoptă” În PHP se pot ușor crea aplicații anti critici majore critici - pattern - ul Spaghetti Code
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ critici majore critici PHP pentru acces acces PHPpentru la date via SQL prezentarea datelor și procesări PHPpentru interfața HTML Web
Dr. Sabingithub.com/ Buragahanafiah/masterphpprofs.info.uaic.ro/tree/master/spaghetti/~busaco/ studiu Jimmy Wales de caz & Larry Larry Sanger : Wikipedia (2001)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ via o suit men Wiki ține Wikispecies en.wikipedia.org/wiki/ Scop voyage Wikipedia ă studiu de : aplica oferirea , Wikipedia Foundation Wikipedia , Wikisource Wikinews , Wiktionary de ț ii Web caz de con Wikimedia_Foundation , , Wikiversity : Wikimedia colaborative wikipedia , ț Wikibooks inut deschis , Commons Wikidata , Wikiquote – wiki , - uri , Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ MediaWiki ( Versiune complexă a stivei de tehnologiiLAMP pentru se oferă Web: destinat API inclusiv un dezvoltatorilor M ariaDB Apache HTTP Server HTTP Apache ImageMagick procesare www.mediawiki.org/wiki/API:Main_page studiu implementat în PHP7.3 + implementat – ( sistemul solu ț ia de con , principal de DjVu wiki caz ț , inuturi utilizat TeX + Nginx ă : , de wikipedia rsvg stocare grafice pentru (server , JavaScript ploticus î toate – n e din 2013 MediaWiki Web) etc. serviciile ) )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Linux Server Linux Virtual Memcached Apache Kafka Kafka Apache Phabricator Elasticsearch Icinga Apache Apache PHP meta.wikimedia.org/ Debian + - FPM ( FPM studiu Traffic Grafana gdnsd ( caching (raportarea deficiențelor deficiențelor (raportarea ( (c streaming GNU/Linux GNU/Linux FastCGI ă Server utare (soluție C++ pentru DNS) C++ pentru (soluție ( (monitorizarea stăriisistemelor) (monitorizarea load de interogări asupra bazelor dedate) bazelor asupra interogări textuală textuală Process balancing caz + de evenimente de evenimente wiki Varnish (sistem deoperare) : / Wikimedia_servers wikipedia Manager for PHP Manager for – ) implementare Java implementare ( ; proxy PyBal – bug – + ( Java +Scala) avansat monit caching tracking ) . locală) ) ) )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ găzduire secundară: găzduire principală: Europa,Amsterdam replicare ( SUA, San Asia, Singapore SUA,Virginia SUA, Texas avansat Francisco caching ): Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Numeroase situri Web recurg la sisteme la sisteme situriWeb de management Numeroase recurg al conținutului ( al conținutului Drupal CMS studi , concepute înPHP concepute Joomla – generale: Content Management Management Content i , de WordPress caz etc. System )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ cu instrumentul instrumentul cu folosite Webde o aplicație inspectarea tehnologiilor WhatRuns studi i extensii + teme vizuale CMS de - urile pot include include pot urile caz
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ cu instrumentul instrumentul cu folosite Webde o aplicație inspectarea tehnologiilor WhatRuns studi i de caz
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Numeroase situri Web recurg la sisteme la sisteme situriWeb de management Numeroase recurg al conținutului ( al conținutului DokuWiki CMS studi concepute înPHP concepute , MediaWiki de tip – Content Management Management Content i de wiki caz , : pmWiki etc. System )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ studi i de caz
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Numeroase situri Web recurg la sisteme la sisteme situriWeb de management Numeroase recurg al conținutului ( al conținutului Magento specifice comerțului electronic: electronic: comerțului specifice CMS studi , concepute înPHP concepute OpenCart – Content Management Management Content i de , PrestaShop caz ,… System )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ inspectarea tehnologiilor folosite de oaplicație Web cu instrumentul instrumentul cu studi i de WhatRuns caz
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Numeroase situri Web recurg la sisteme la sisteme situriWeb de management Numeroase recurg facilitând online ( facilitând discuții al conținutului ( al conținutului bbPress CMS studi concepute înPHP concepute , – esoTalk Content Management Management Content i message de , caz phpBB board ,… , forum Web): Web): forum , System )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ inspectarea tehnologiilor folosite de oaplicație Web cu instrumentul instrumentul cu studi i de WhatRuns caz
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ caracterizare,facilități, instrumente, exemple privire generală asupraPHP privire | | | |_)| ||_) |_ ._ ._ rezumat
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ un model de date pentru Web: XML familia episodul viitor:
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/