Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst,...
Transcript of Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst,...
![Page 1: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/1.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/Web Technologies
Web programming (II)
._ |_ ._
|_)| ||_)
| |
Web application development in PHP
![Page 2: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/2.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
“Poor is the pupil who does not surpass his master.”
Leonardo da Vinci
![Page 3: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/3.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
How an application server is used for Web application development?
![Page 4: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/4.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Goal: increasing the efficiency of all processes involved
into the Web application development
![Page 5: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/5.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Integrated in one/many Web servers
also, can provide its own Web server or runtime environment
![Page 6: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/6.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Can encourage or enforce an architectural vision regarding Web application development
typical situation:MVC or variants
(re)visit previous lecture
![Page 7: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/7.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Simplifies the invocation of programs (scripts) concerning a Web application
dynamic content generation on the server side
![Page 8: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/8.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Aspects of interest:
programming language(s)core API
data model persistent storageWeb interaction
cookies and sessions development environments + frameworks, components,…
specific characteristics
![Page 9: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/9.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Programming language(s)
offer support for one or multiple paradigms: imperative
object-orientedfunctional
reactiveconcurrent
parallel…
![Page 10: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/10.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Programming language(s)
static – example: C#, Java, Rustversus
dynamic – e.g., JavaScript, PHP, Python, Ruby
![Page 11: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/11.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Programming language(s)
interpreted and/or compiled
commonly, intermediate code generation is preferred:IL (Intermediate Language) – C#, Java, Scala,…
![Page 12: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/12.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Core API
gives the language + application server “power”(via predefined functions/classes)
![Page 13: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/13.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Core API
gives the language + application server “power”(via predefined functions/classes)
security, consistency, access to the operating system/runtime resources, platform independence, etc.
![Page 14: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/14.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Persistent storage
in relational databases – via SQL
![Page 15: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/15.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Persistent storage
in relational databases – via SQL
examples:ADO.NET for ASP.NET
Java – JDBC (Java DataBase Connectivity)PHP – predefined functions/modules, plus included
libraries (SQLite + mysqli) or various extensions
![Page 16: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/16.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Persistent storage
in relational databases – via SQL
ORM (Object-Relational Mapping)
Go – Xorm frameworkJava – JPA (Java Persistence API) specification
+ implementations: EclipseLink, Hibernate, OpenJPA,…Node.js – Sequelize library
PHP – frameworks: Doctrine, Propel, etc.
advanced
![Page 17: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/17.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Persistent storage
in relational databases – via SQL
Active Record used in ORM
examples: active_record (Node.js module), Castle Project (.NET),
DBIx::Class (Perl), Orator (Python), Play Framework (Java, Scala), Rails (Ruby)
advanced
![Page 18: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/18.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Persistent storage
adopting tree-based models: XML
(semi)structured datatransformations in other formats: XPath, XSLT
processing: DOM, SAX, SimpleXML, etc.data validation: DTD, XML Schema, RELAX,…
querying: XQuery next lectures
![Page 19: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/19.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Persistent storage
using other non-relational paradigms(based on graphs and or key—value)
distributed on Internet, scalable – NoSQLgithub.com/erictleung/awesome-nosql
nosql.mypopescu.com/kb/nosql
examples: Cassandra, CouchDB, Hadoop, MarkLogic, MongoDB, Neo4j, etc.
advanced
![Page 20: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/20.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Web interaction
facilitated by specific controls specified in the source-code running on the server
can emulate HTML form fields and/or provide new interactive controls – e.g., calendar, slideshow,…
client-specific HTML (+JavaScript) code generation
![Page 21: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/21.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Web interaction
examples:ASP.NET (<asp:control> – e.g., FileUpload, ListBox, Table,...)
PRADO framework (PHP)formidable, form-data, forms – Node.js modules
Java platform: JSF (JavaServer Faces)
advanced
![Page 22: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/22.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Web interaction
encourages the use of templates based on a specific processor – Web template system
![Page 23: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/23.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Web interaction
Web template system
using specifications of content presentation (a Web template), persistent data (e.g., retrieved from a database) is used by a processor (template engine)
in order to generate HTML documents or other formats
![Page 24: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/24.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
example:the specification of content presentation
(HTML template – .tpl) includes variable names– here, using [@variable] syntax – that will be substituted by
actual values obtained from the program as a result of the Web template system invocation
<!-- HTML template -->
<h1 class="profile">[@username] profile</h1>
<img src="[@photoURL]" alt="photo"/>
<div class="identity">[@firstName] [@lastName]</div>
<div class="location">[@location]</div>
<!-- PHP program: template processing -->
$profile = new Template ('templates/profile.tpl');
$profile->set ('username') = 'Tux';
$profile->set ('photoURL') = 'imgs/tux.svg';
$profile->set ('firstName') = 'Tuxy';
$profile->set ('lastName') = 'Pinguinesscool';
$profile->set ('location') = 'Romania';
🐧 Tuxy PinguinesscoolRomania
Tux profile
![Page 25: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/25.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Web interaction
Web template system
on the server
Apache FreeMarker (Java), Blade (PHP), Haml (Ruby), Mustache (C++, JS, PHP, Python, Scala,…), Razor (.NET), Smarty (PHP), Tonic (PHP), Velocity (Java), XSLT (XML)
![Page 26: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/26.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Web interaction
Web template system
on the client
available for JavaScript: Dust.js, EJS, HandleBars, Mustache, Nunjucks,…
github.com/sorrycc/awesome-javascript#templating-engines
![Page 27: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/27.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Web interaction
asynchronous data transfer with Ajax et al.
possibly, via additional frameworks/modules/classes
see upcoming lectures
![Page 28: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/28.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Examples – including frameworks
C++ – CppCMS, Silicon, TreeFrog, WtC# et al. (.NET platform) – ASP.NET
D – Dweb, vibe.dDart – Aqueduct, shelf, Stream,…
Erlang / Elixir – Chicago Boss, Phoenix, N2O, SugarGo – Beego, Buffalo, Gin, Gorilla, Revel
Haskell – Snap, Spock, Yesod etc.
advanced
![Page 29: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/29.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Examples – including frameworks
Java (Jakarta Enterprise Edition – ex-J2EE) – GlassFish, JBoss, Tomcat, Payara + Apache Struts, Apache Wicket,
Grails, Spring, VaadinJavaScript (ECMAScript) – Node.js + Derby, Express,
Locomotive, Meteor,…Perl – Catalyst, CGI::Application, Mojolicious
PHP – PHP
advanced
![Page 30: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/30.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Examples – including frameworks
Python – Gunicorn, Tornado, uWSGI, Waitress etc.(based on WSGI – Python Web Server Gateway Interface spec)
+ Django, TurboGears, web2pyRuby – Passenger, Puma, Thin, Unicorn,…
(implements Rack specification)
+ Ruby on Rails, SinatraRust – Gotham, Iron, Rocket, Rouille etc.
Scheme – Artanis
advanced
![Page 31: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/31.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Examples – including frameworks
multi-language approach:Vert.x
(available for Java, JS, Groovy, Ruby, Ceylon, Scala,…)
advanced
![Page 32: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/32.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Support for software engineering
stimulate the use of design patterns:Container
MV*Proxy
Configuration ParametersInvocation Context
…
![Page 33: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/33.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
proiectare
example: Spaghetti Code anti-patternusually, specific to Web applications which “mixes-up”
business logic with content presentation (view) and data access mechanism
sourcemaking.com/antipatterns/spaghetti-code
![Page 34: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/34.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Support for software engineering
encourages the adoption of an architecture:layered
event-drivenmicrokernel / plug-in
microservicesspace-based, cloud
M. Richards, Software Architecture Patterns, O’Reilly, 2015 www.oreilly.com/programming/free/files/software-architecture-patterns.pdf
advanced
![Page 35: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/35.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Integrated into a software stack
software stack (servers, tools,…) offering support for developing Web applications
available – usually, open source –for a specific platform
(operating system, Web server, database server, application server, programming language)
![Page 36: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/36.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Integrated into a software stack
LAMP(Linux, Apache HTTP Server, MariaDB/MongoDB, Perl/PHP/Python)
alternatives:FAMP (FreeBSD), MAMP (macOS),
WAMP (Windows), XAMP (multi-platform)
www.apachefriends.org
![Page 37: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/37.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
server de aplicații web
www.wamp.net – tools for Web developers
advanced
![Page 38: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/38.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
web application server
Integrated into a software stack
MEAN – full stack JavaScript(MongoDB, Express.js, Angular, Node.js)
mean.io
advanced
![Page 39: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/39.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
server de aplicații web
Integrated into a software stack
complementary approaches:LAPP (Linux, Apache, PostgreSQL, Perl/PHP/Python)
LEMP (Linux, Nginx, MySQL/MariaDB, Perl/PHP/Python)
LLMP (Linux, Lighttpd, MySQL/MariaDB, Perl/PHP/Python)
LYCE (Linux, Yaws, CouchDB, Erlang)
LYME (Linux, Yaws, Mnesia, Erlang)
avansat
![Page 40: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/40.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
Essential information about PHP?
![Page 41: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/41.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php
History
Important characteristics
PHP as programming languageparadigms: procedural, object-oriented, functional
PHP as Web development platforminteraction, database access, frameworks,
libraries and tools, case studies
![Page 42: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/42.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
Personal Home Page Tools (1995)Rasmus Lerdorf
PHP 3 (1998)developed by Zend – Zeev Suraski & Andi Gutmans
PHP 4 (2000)support for object-oriented programming
PHP 5 (2004) – most recent version: PHP 5.6 (2014)new features inspired by Java
PHP 6 (currently dead)
phpngPHP 7 (2015), PHP 7.1 (2016), PHP 7.2 (2017)strong typing, Unicode support, performance,…
![Page 43: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/43.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: characteristics
Web application server
provides a script-based interpreted programming language
could be directly included into HTML documents
![Page 44: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/44.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
PHP is a procedural language, offering support for other programming paradigms
(object-oriented and, recently, functional)
could be used as a general purpose language, too
php: characteristics
![Page 45: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/45.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
Syntax inspired by C, Perl and Java – case sensitive
commonly, PHP code files use .php extension
php: characteristics
![Page 46: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/46.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
Freely available – open source – for various platforms (Linux, Windows, macOS, UNIX)
and Web servers: Apache, IIS, nginx,…
www.php.net
www.zend.com
php: characteristics
![Page 47: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/47.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
PHP processor (engine) usage
Web Client
HTTP request(GET, POST,...)
response(HTML, PNG, SVG,...
representation)
Zend processor(engine)
PHPapplication
server
.php
programs
(external) resources
Web Server
![Page 48: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/48.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
PHP processor (engine) usage
Web Client
HTTP request(GET, POST,...)
response(HTML, PNG, SVG,...
representation)
Zend processor(engine)
PHPapplication
server
.php
programs
(external) resources
Web Server
possibly, various extensions (modules) could be integrated
![Page 49: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/49.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
A PHP program is interpreted by Zend Engine 2which generate internal instructions – opcodes
www.php.net/manual/en/internals2.opcodes.php
www.phpinternalsbook.com/
php: characteristics
![Page 50: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/50.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: caracterizare
interpreting a PHP program vs. compiling Java code
PHP code is interpreted each time when it must be executed
![Page 51: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/51.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
line # * op fetch ext return operands----------------------------------------------------------------------------
3 0 > EXT_NOP1 RECV !0
5 2 EXT_STMT3 ADD_STRING ~0 'Hello+'4 ADD_VAR ~0 ~0, !05 ECHO ~0
6 6 EXT_STMT7 > RETURN null
<?php
class Greeting {
public function sayHello ($to)
{
echo "Hello $to";
}
}
$greeter = new Greeting ();
$greeter->sayHello ("World");
?>
opcodes
transforming PHP codeinto opcodes
tinyurl.com/zn6c53x
advanced
![Page 52: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/52.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: caracterizare
for efficiency, the opcodes
are stored into shared memory
advanced
![Page 53: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/53.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: caracterizare
various behaviors of PHP platforms, including loaded extensions (.so/.dll shared libraries), could be globally configured by using the php.ini file
precision = 14 ; precision for float values – details at http://php.net/precision
safe_mode = Off ; processing control – http://php.net/safe-mode
max_execution_time = 30 ; max. number of seconds allocated to program execution
memory_limit = 128M ; max. size of the memory allowed for a script
post_max_size = 8M ; max. size of data transmitted via POST method
default_mimetype = "text/html" ; default MIME type for the content generated by a script
file_uploads = On ; file uploads are permitted
upload_max_filesize = 32M ; max. size of an uploaded file
allow_url_fopen = On ; opening files specified by a URL is allowed
session.use_cookies = 1 ; Web sessions will be stored in cookies
session.name = PHPSESSID ; default cookie name regarding Web sessions
…
; specifying the extensions loaded during the PHP server application initialization
extension=php_pdo_sqlite.dll
extension=php_mysqli.dll
extension=php_soap.dll
…
![Page 54: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/54.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
PHP program execution behavior could be adjusted via declare directive – possibly, for a block of code
// charset encoding used for generated content
declare (encoding='ISO-8859-2');
// strict datatype checking – PHP 7
declare (strict_types=1);
php: characteristics
advanced
![Page 55: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/55.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
To increase performance, the just-in-time compilation could be adopted
HHVM – HipHop Virtual Machine (Facebook)
PHP source-codeopcodesmachine code (e.g., x86-64)
php: characteristics
advanced
![Page 56: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/56.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
To increase performance, the just-in-time compilation could be adopted
HHVM – HipHop Virtual Machine (Facebook)
used by Baidu, Box, Etsy, Facebook, Wikipedia,…
www.hhvm.com
php: characteristics
advanced
![Page 57: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/57.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: characteristics
User interaction:
retrieving the values entered into Web form fieldscookiessessions
user authentication
access to global variables – created “on the fly”
![Page 58: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/58.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: characteristics
Features regarding Web technologies:
URL processingHTTP support – including cURL
caching via memcached
Web service development by using SOAP and REST
…and others
![Page 59: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/59.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: characteristics
Support for database access:
abstract layers
DBAL (DataBase Abstraction layer)iODBC (Independent Open DataBase Connectivity)
PDO (PHP Data Objects)
www.phptherightway.com/#databases_abstraction_layers
![Page 60: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/60.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: characteristics
Support for database access:
specific to a database server
relational: DB2, MySQL, Oracle, PostgreSQL, SQLite,…NoSQL – e.g., MongoDB
consult http://www.phptherightway.com/#databases
![Page 61: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/61.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: characteristics
Resource content processing:
audio files – via various libraries: ktaglib, oggvorbis, etc.bzip2, LZF, RAR, ZIP, ZLIB archives
PDF documentsimages – useful libraries: Cairo, GD, EXIF, ImageMagick
JSON filesXML documents – creating, processing, validating, etc.
credit cards...
![Page 62: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/62.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: characteristics
Support for system resources + Internet:
file systems, including FTPprocesses – with libevent, pthreads, Gearman,...
event processing – via Event
socketse-mail – e.g., IMAP, POP3
...and many others
![Page 63: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/63.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
(instead of) break
![Page 64: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/64.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
PHP as procedural programming language
![Page 65: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/65.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – scalars
boolean
TRUE or FALSE
![Page 66: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/66.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – scalars
integer
values specifiedin 10 or 16 (hexa), 8 (octal), 2 (binary) bases
![Page 67: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/67.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – scalars
float
real numbersusually, conforming to IEEE 754 (double precision)
![Page 68: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/68.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – scalars
float
real numbersusually, conforming to IEEE 754 (double precision)
special value: NAN (not a number) constant
useful predefined functions: is_nan(), is_finite(), is_infinite()
![Page 69: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/69.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – scalars
string
ASCII character strings(only PHP 7 provides native support for Unicode)
![Page 70: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/70.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – scalars
string
ASCII character strings(only PHP 7 provides native support for Unicode)
same as C, some escape characters could be used\n \r \t \e \\ \$ \"
![Page 71: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/71.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – scalars
string
common delimiters: " or '
string size could not be more than 2 GB
![Page 72: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/72.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – composites
array
association between values (of any type) and keys (of integer or string types)
![Page 73: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/73.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – composites
array
there is no clear distinction between indexed and associative arrays
an array could represent various data structures: list (vector), hash table (an implementation of a map),
dictionary, collection, stack, queue,…
![Page 74: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/74.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – composites
array
// an indexed array (vector of values)
$gifts = array ("scooter", "laptop", "ball", "axe");
// associative array – (key, value) pairs
array ( "name" => "Tux", "size" => 17, "offer" => TRUE );
// simplified syntax (accepted for PHP 5.4+)
[ "name" => "Tux", "size" => 17, "offer" => TRUE ];
![Page 75: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/75.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – composites
object
instance of a class
created by new operator
![Page 76: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/76.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – special
resource
denotes a reference to an external resource
examples: bzip2, curl, ftp, gd, mysql link, mysql result, pdf document, printer, stream, socket, xml, zlib
a resource is created by using specific functionse.g., a stream resource is initiated by the fopen() function
and used by fread(), feof(), fgets(),... functions
![Page 77: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/77.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – special
resource
denotes a reference to an external resource
predefined functions: is_resource()
get_resource_type()
details at www.php.net/manual/en/resource.php
![Page 78: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/78.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: data types – special
null
specifies the NULL valuerepresenting a variable that has no value
useful functions:is_null()
unset()
![Page 79: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/79.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: variables
Variables have names composed by letters, digits, and _ characters prefixed by the $ symbol
could store values – having a specific data type –or references
www.php.net/manual/en/language.variables.php
![Page 80: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/80.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: variables
Variables are created “on the fly”data type is inferred according to the context
data type automatic conversion (type casting) is similar to the C language
$age = 21; /* a variable of Integer type */
$connected = TRUE; # a Boolean datatype one
$prefer["color"] = "gray"; // an associative array
![Page 81: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/81.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: variables
Useful predefined functions:
var_dump()
settype()
is_bool(), is_int(), is_float(), is_array(), is_string()
is_scalar(), is_numeric()
…and others
![Page 82: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/82.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: variables
Scope
in order to be accessed in the entire program, the variables should be declared as global
php.net/manual/en/language.variables.scope.php
![Page 83: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/83.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
$score = 33;
function getScore () {
echo "Current score: " . $score;
}
getScore();
Undefined variable:
score in prog.php on line 4
$score = 33;
function getScore () {
global $score;
echo "Current score: " . $score;
// similar to $GLOBALS["score"]
}
getScore();
Current score: 33
![Page 84: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/84.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: variables
Scope
a variable could be also declared as static
exists only in a local scope (e.g., inside a function), but it does not lose its value
when program execution leaves this scope
![Page 85: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/85.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined variables
Variables available in the whole program (superglobals)
$GLOBALS [ ]
an associative array containing references to all variables defined as global
![Page 86: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/86.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined variables
$_SERVER [ ]
$_GET [ ] $_POST [ ] $_FILES [ ] $_REQUEST [ ]
$_SESSION [ ]
$php_errormsg
$argc $argv
...
![Page 87: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/87.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined variables
$_SERVER [ ]
$_GET [ ] $_POST [ ] $_FILES [ ] $_REQUEST [ ]
$_SESSION [ ]
$php_errormsg
$argc $argv
...
Web server specific data
client specific HTTP requestsdata about
Web session
reported error message
command line arguments
![Page 88: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/88.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: constants
Specified with define ( )
globally available in the program
define ("MAX_SIZE", "15");
![Page 89: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/89.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined constants
Examples:
PHP_VERSION
PHP_OS
PHP_EOL
PHP_INT_MAX
PHP_INT_SIZE
DIRECTORY_SEPARATOR
TRUE
FALSE
NULL
![Page 90: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/90.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined constants
Error reporting control:
E_ERROR fatal errors (script execution is ended)E_WARNING warningsE_PARSE code processing errors (parsing)E_NOTICE notifications at runtimeE_STRICT suggestions on code improvementE_DEPRECATED notifications about deprecated aspects
www.php.net/manual/en/errorfunc.constants.php
www.phptherightway.com/#errors_and_exceptions
advanced
![Page 91: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/91.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined constants
Runtime environment offers access to “magical” constants their values could be used in a given program
__LINE__
__FILE__
__DIR__
__FUNCTION__
__CLASS__
__TRAIT__
__METHOD__
__NAMESPACE__
advanced
![Page 92: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/92.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: operators
Majority of them are similar to the C language ones
arithmetic: + - * / % ++ --
value assignation: = and => (for arrays)reference assignation: =&
bit-wise: & | ^ << >>
comparisons: == === != <> !== < > <= >= ?: ?? <=>
error reporting control: @
logic (Booleans): and or xor ! && ||
string (concatenation) – same as Perl: . .=
![Page 93: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/93.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: operators
In PHP 7, new operators could be used:
<=> (spaceship) comparing expressions (of a scalar type),
and returning -1, 0 or 1
echo 15.5 <=> 15.5; // 0 (equality)
echo 15.5 <=> 16.5; // -1 (right value is greater)
echo 17.5 <=> 15.5; // 1 (left value is greater)
![Page 94: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/94.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: operators
In PHP 7, new operators could be used:
?? (null coalescing)offers the value of first operand if exists and it’s not NULL,
otherwise returns the value of second operand
// as user name, we’ll use the value provided by a Web form
// (retrieved with GET or POST); if it not exists, the value is 'tux'
$username = $_GET['user'] ?? $_POST['user'] ?? 'tux';
![Page 95: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/95.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: control statements
if, switch, while, do, for, break, continuesimilar to the C instructions
if (!$name) { echo ("No name was given…");
} else {echo ("Welcome, " . $name . "!\n");
}
![Page 96: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/96.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: example
<?php
// filling up an array with values from 1 to 10
for ($index = 1; $index <= 10; $index++) {
$values[$index] = $index;
}
// computing the sum of values
$sum = 0;
foreach ($values as $item)
$sum += $item;
/* showing obtained sum on the standard output
to be sent to the Web client */
echo ("<p>Sum of first 10 numbers is <strong>" .
$sum . "</strong>.</p>");
?>
![Page 97: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/97.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
Invoking (running) the PHP program from the command line:
saving source-code into a text file – values.php
calling PHP interpreter from the command line interface
php values.php
<p>Sum of first 10 numbers is <strong>55</strong>.</p>
![Page 98: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/98.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
Invoking (running) the PHP program on the Web server:
placing the source code – having read rights
in the browser, specifying the URL to the program to be invoked via GET method of the HTTP protocol
result generated by the script
![Page 99: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/99.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: control statements
Including source-code from other files (support for modularization)
includesearch source file in predefined directories specified
via include_path and evaluates it
if file not exists, a warning is issued
include_once – to include it only once
![Page 100: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/100.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: control statements
Including source-code from other files (support for modularization)
requiresearch source file in predefined directories specified
via include_path and evaluates it
if file not exists, a fatal error is signaled
require_once – to include it only once
![Page 101: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/101.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
User defined functions:
function sendMessage ($to="", $from="", $subject="Web") {
// body…
}
php: functions
parameters with default
values
php.net/manual/en/language.functions.php
![Page 102: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/102.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
define ('MAX', 10); // maximum number of values
function square ($number) { // a function to square a numberreturn $number * $number;
}
$number = 0;while ($number < MAX) {$number++; // incrementing…
if ($number % 2) // is odd number...continue; // continuing to next iteration
// it is an even number, so showing its squareecho "Square $number is " . square ($numar) . "\n";
} // end of while
![Page 103: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/103.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
User defined functions:
php: functions
a function name is case-insensitive
parameters could be indicated by reference – prefixed by &
for PHP 5.6+, a variable number of parameters is indicated by …
php.net/manual/en/functions.arguments.php
![Page 104: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/104.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: funcții
<?php
declare (strict_types=1);
// arguments should be integers, returned value must be of integer type
function add (int ...$numbers): int {
$sum = 0;
foreach ($numbers as $number) {
$sum += $number;
}
return $sum;
}
echo add (7, 3, 74, 1);
echo add (pi (), '?');
?>
PHP 7: data type could be specified for each argument and for the value returned by function
(scalar type declarations)
85
Fatal error: Uncaught TypeError:
Argument 1 passed to add() must
be of the type integer, float given
Next TypeError: Argument 2 passed
to add() must be of the type integer,
string given
![Page 105: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/105.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
Beginning with PHP 5.3,anonymous functions could be definedfunctional programming (e.g., closures)
$hello = function ($name) { // variable type is function
printf ("Hello %s...\n", $name);
};
$hello ('world');
$hello ('Tuxy');
php: functions
vezi www.phptherightway.com/pages/Functional-Programming.html
![Page 106: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/106.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined functions
mathematical & conversioncharacter string manipulation
array processingaccess to resources and file processing
database manipulationregarding network connections
XML, PDF, JPEG,... resource processingoperating system specific
general purpose
details at php.net/manual/en/funcref.php
![Page 107: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/107.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined functions
Math:abs(), mod(), fmod()ceil(), floor(), round(), max(), min()exp(), log10(), log()pow(), sqrt()sin(), cos(), tan(), asin(), …, sinh(), …, pi()rand(), srand()bindec(), octdec(), dechex(),…, base_convert()is_finite(), is_infinite(), is_nan()
php.net/manual/en/refs.math.php
![Page 108: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/108.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined functions
Strings:echo(), print(), printf(), sprintf() etc.strlen(), chr(), ord(), substr(), strstr(), strpos(),…strcmp(), strcasecmp(), strnatcmp() etc. strcat(), str_replace(), str_ireplace(), strrev() etc.trim(), ltrim(), rtrim() explode(), implode(), split(), join(), strtok()
details about text processing:php.net/manual/en/refs.basic.text.php
![Page 109: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/109.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined functions
Regular expressions:conforming to POSIX standardereg(), ereg_replace(), split() etc.
Perl compatible – PCRE: www.pcre.org
preg_filter(), preg_grep(), preg_match(), preg_split(),…
![Page 110: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/110.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: funcții predefinite
testing and debugging regular expressions on the Webregex101.com/#PCRE
![Page 111: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/111.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined functions
Arrays:array_count_values(), array_search(), array_filter(),
array_slice(), array_chunk() array_fill(), array_combine(), array_shift(),
array_reverse(), array_multisort(), array_sum(),…array_merge(), array_intersect(), array_diff()array_keys(), array_key_exists()array_push(), array_pop() array_map(), array_reduce()
php.net/manual/en/book.array.php
![Page 112: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/112.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: funcții predefinite
/* filters certain values from an array
by using a programmer defined function */
function value_less_than ($number) {
// returns an expression of function type
return function ($item) use ($number) { // a closure (functional approach)
return $item < $number;
};
}
$marks = array (7, 8, 9, 10, 5, 3, 10, 6, 4);
// using array_filter(), a predefined function, on marks array
// to obtain the values less than a given value (here: 7)
$values = array_filter ($marks, value_less_than (7));
print_r ($values); // we got: Array ( [4] => 5 [5] => 3 [7] => 6 [8] => 4 )
also, study wiki.php.net/rfc/closures
advanced
![Page 113: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/113.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined functions
Character manipulation:ctype_digit(), ctype_xdigit(), ctype_print(),
ctype_punct(), ctype_space(),…ctype_alpha(), ctype_alnum(), ctype_lower(),
ctype_upper()
![Page 114: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/114.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined functions
Date & time:getdate(), localtime(), gettimeofday(), time(), etc.date(), idate(), gmdate(),…checkdate() strftime(), strtotime()
see also Calendar, DateTime, HRTime extensions
![Page 115: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/115.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined functions
PHP variables:empty(), isset(), unset()strval(), print_r(), var_dump() serialize(), unserialize()
also, consult php.net/manual/en/book.var.php
![Page 116: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/116.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined functions
Files and directories:using FILE data type – similar to C language:
fopen(), fread(), fscanf(), fgets(), fwrite(), fprintf(), fseek(), ftell(), feof(), fclose(), ftruncate(), fstat(),...
file(), copy(), rename(), delete(), move_uploaded_file(), tmpfile()
file_exists(), filesize(), filetype(), fileperms(),…, stat()is_dir(), is_file(), is_readable(), is_writeable(),…chdir(), mkdir(), rmdir()disk_free_space(), disk_total_space()
study php.net/manual/en/refs.fileprocess.file.php
![Page 117: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/117.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined functions
URLs:urldecode(), urlencode(), parse_url()base64_decode(), base64_encode()http_build_query()
![Page 118: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/118.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined functions
Web resource processing (HTML, JSON):nl2br(), htmlentities(), htmlspecialchars(), strip_tags()
get_browser(), show_source(), highlight_string(),...
json_encode(), json_decode(), json_last_error()
![Page 119: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/119.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined functions
Support for cryptographic operations:
password hashing – password_*() functionsuseful extensions
CSPRNG (generating pseudo-random numbers – in PHP 7+)
Hash (hash_*() digest functions)
OpenSSL (functionalities for SSL/TLS)
Sodium (advanced encrypt/decrypt operations – in PHP 7.2+)
details in php.net/manual/en/refs.crypto.php
![Page 120: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/120.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: funcții predefinite
Support for graphical content (raster/vector):
preinstalled extensionsCairo – vector/raster processing: www.cairographics.org
EXIF – access to JPEG meta-data
GD – raster processing (GIF, JPEG, PNG): libgd.github.io
ImageMagick – multi-format processing: www.imagemagick.org
php.net/manual/en/refs.utilspec.image.php
![Page 121: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/121.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined functions
Other useful functions:die(), eval(), exit(), sleep(), usleep(), time_sleep_until()
uniqid(), sys_getloadavg()
php_info(), php_check_syntax()
![Page 122: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/122.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: other features
SPL (Standard PHP Library)access to standard ways of data processing
defined data structures: SplStack, SplQueue, SplHeap, SplPriorityQueue,...
iterators: ArrayIterator, FilesystemIterator, RegexIterator etc.
www.php.net/splwww.phptherightway.com/#standard_php_library
advanced
![Page 123: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/123.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: other features
Program execution from command linePHP CLI
http://php.net/manual/en/features.commandline.php
advanced
![Page 124: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/124.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: other features
PHP as a Web server module (Apache, nginx)
e.g., by using proxy_fcgi and php-fpm (FastCGI Process Manager) modules – php-fpm.org
wiki.apache.org/httpd/php
www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/
advanced
![Page 125: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/125.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: other features
PHP 5.4+ includes its own Web server
run with php –S localhost:8000 –t phpwebapp/
php.net/features.commandline.webserver
advanced
![Page 126: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/126.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: other features
Integration with other technologies/platforms
examples: Java, JavaScript, Lua, .NET
advanced
![Page 127: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/127.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
How about the PHP supportfor object-oriented programming?
![Page 128: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/128.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: classes
Class definition via classand instantiation by using new operator
objects are treated similar to references(a variable of object type contains a reference to
an object, not a copy of it)
php.net/manual/en/oop5.intro.phpdetails in php.net/language.oop5
![Page 129: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/129.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
object-oriented programming – encapsulation
class Student { // specifying a class
// properties (data members)
private $year;
private $email;
public $name;
// public methods
public function setYear ($aYear) {
$this->year = $aYear;
}
public function getYear () {
return $this->year;
}
}
$this is a pseudo-variablespecifying a reference to the current object
![Page 130: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/130.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
object-oriented programming – encapsulation
class Student { // specifying a class
// properties (data members)
private $year;
private $email;
public $name;
// public methods
public function setYear ($aYear) {
$this->year = $aYear;
}
public function getYear () {
return $this->year;
}
}
// an object instance
$stud = new Student ();
$stud->setYear (2);
$stud->name = 'Tux';
print_r ($stud);
Student Object
(
[year:Student:private] => 2
[name] => Tux
[email:Student:private] =>
)
![Page 131: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/131.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: classes
Similar to C++, members – properties or methods –could be declared
public
private
protected
![Page 132: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/132.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
object-oriented programming – inheritance
class CleverStudent extends Student {private $marks; // obtained marks (property)
public function setMarks ($m) { $this->marks = (array) $m;
} public function getMarks () {
return (array) $this->marks; }
}
$otherStud = new CleverStudent ();// calling a method from base class$otherStud->setYear (2); // calling a method from derived class$otherStud->setMarks (
['Web' => 10, 'SoftEng' => 9] );
![Page 133: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/133.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
object-oriented programming – inheritance
class CleverStudent extends Student {private $marks; // obtained marks (property)
public function setMarks ($m) { $this->marks = (array) $m;
} public function getMarks () {
return (array) $this->marks; }
}
$otherStud = new CleverStudent ();// calling a method from base class$otherStud->setYear (2); // calling a method from derived class$otherStud->setMarks (
['Web' => 10, 'SoftEng' => 9] );
print_r ($altStud);
CleverStudent Object
(
[marks:CleverStudent:private]
=> Array
(
[Web] => 10
[SoftEng] => 9
)
[year:Student:private] => 2
[name] =>
[email:Student:private] =>
)
![Page 134: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/134.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: classes
Special methods:
constructors are named __construct()
destructors are named __destruct()
![Page 135: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/135.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: classes
Accessing static, constant or overloaded properties/methods
::
scope resolution operator (Paamayim Nekudotayim)
www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php
![Page 136: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/136.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: classes
Accessing static, constant or overloaded properties/methods
::
self – current classparent – parent class
![Page 137: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/137.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: classes
Properties or methods declared as static
could be accessed without class instantiation
for examples, visitwww.php.net/manual/en/language.oop5.static.php
![Page 138: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/138.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: classes
Abstract classes/methods are declared with abstract
abstract classes can not be instantiated
each class having at least one abstract method is considered abstract
abstract methods must be implemented in a child class (specified by extends) of an abstract class
![Page 139: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/139.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: interfaces
Specifying methods that will be implemented by a class (similar to Java)
// interface regarding a content template
interface iTemplate {
// setting a variable to be substituted with its value
public function setVar ($name, $var);
// getting the template representation
public function getRep ($template);
}
details at php.net/manual/en/language.oop5.interfaces.php
![Page 140: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/140.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
// a class implementing the interfaceclass Template implements iTemplate {
// associative array including variables to be replaced by their valuesprivate $variables = array ();
public function setVar ($name, $var) {$this->variables[$name] = $var;
}
public function getRep ($template) {foreach ($this->variables as $name => $val) {
// replacing a variable name with its value$template = str_replace ('{' . $name . '}', $val, $template);
}return $template;
}}
advanced aspects: www.phptherightway.com/#templating
![Page 141: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/141.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined interfaces & classes
Traversable
Iterator
IteratorAggregate
Throwable
ArrayAccess
Serializable
Closure
Generator
www.php.net/manual/en/reserved.interfaces.php
advanced
![Page 142: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/142.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: predefined interfaces & classes
// Iterator interfaceIterator extends Traversable {
// methods to be written by programmer// in the class implementing the interfaceabstract public mixed current ( void )abstract public scalar key ( void ) abstract public void next ( void )abstract public void rewind ( void )abstract public boolean valid ( void )
}
advanced
![Page 143: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/143.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: traits
Trait
concept borrowed from Self language
available for PHP 5.4+
collection of methods that can be reused in other classes
www.php.net/manual/en/language.oop5.traits.php
advanced
![Page 144: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/144.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: traits
Trait
considered as a C++ class template
in contrast to interfaces, offers implementations of methods, not just their signature
advanced
![Page 145: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/145.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/// traits (behaviors) that will be associated to 2D geometrical shapestrait Rotating {
public function rotate ($angle) { // implements rotation}
}
trait Moving {public function moveTo ($x, $y) { // move to other coordinates}
}
trait Filling {public function fill ($color) { // performs filling}
}
avansat
![Page 146: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/146.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
abstract class Shape { // geometrical shapes classpublic function draw() {echo ('I am drawing a ' . get_class());
}}class Rectangle extends Shape { // uses desired traits
use Filling, Moving, Rotating; // can be filled, moved, rotated
public function transform () { // plus, a specific transformation}
}
final class Circle extends Shape { // Circle class can not be extendeduse Moving, Filling; // a circle can be moved or filled
const PI = 3.1415265;
public function computeArea () { }
}
advanced
![Page 147: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/147.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
// 2 shapes (a circle and a rectangle) are instantiated$aCircle = new Circle ();$aRect = new Rectangle ();$aCircle->draw ();$aCircle->rotate (); // an error will be emitted$aRect->draw ();
I am drawing a CirclePHP Fatal error: Call to undefined method Circle::rotate()
in /home/dMdWgn/prog.php on line 47
php: traits
advanced
![Page 148: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/148.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: special properties
A class has associated special (“magical”) propertiesthat can be overloaded
__construct ()__destruct ()
__toString ()
__get ()__set ()
others at www.php.net/manual/en/language.oop5.magic.php
advanced
![Page 149: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/149.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: objects
Objects can be “cloned” via clone
Objects can be compared by using the === operator
![Page 150: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/150.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: objects
Functions for class & object manipulationget_class() will return an object name,
instance of a given classget_parent_class() gets the parent class of an objectmethod_exists() tests if a method exists
for a certain objectclass_exists() tests the existence of a classis_subclass_of() determines if a heritage relation
between two classes exists
![Page 151: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/151.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: exceptions
Similar to Java exceptions
try, catch, throw
Exception class
details at www.php.net/manual/en/language.exceptions.php
![Page 152: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/152.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: namespaces
Used to avoid name collisions and to create aliases
declared with namespace (first line of a program)
![Page 153: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/153.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: namespaces
Used to avoid name collisions and to create aliases
declared with namespace (first line of a program)
example: namespace Facebook; // Facebook SDK for PHP
also study www.phptherightway.com/#namespaces
![Page 154: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/154.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: namespaces
Used to avoid name collisions and to create aliases
same namespace could be defined in multiple files
namespace hierarchies are permitted
namespace Project\Module\Submodule;
class SVGGen { ... };specified with
Project\Module\Submodule\SVGGen
![Page 155: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/155.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: namespaces
Used to avoid name collisions and to create aliases
using a specific construct: use
(optionally, specifying an alias)
use Project\Module\Submodule;
![Page 156: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/156.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: namespaces
Used to avoid name collisions and to create aliases
using a specific construct: use
(optionally, specifying an alias)
use Project\Module\Submodule;
real examples:use Facebook\Authentication\AccessToken;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
![Page 157: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/157.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: namespaces
Used to avoid name collisions and to create aliases
without any namespace definition, all class and function definitions are placed into the global space
namespace WebProject;
function fopen () { // specifying our own function
...
$file = \fopen (...); // calling a predefined function (from global space)
}
![Page 158: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/158.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
How about the features regarding Web interaction?
![Page 159: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/159.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: web interaction
Data transmitted by client (browser) are stored into (global) predefined associative arrays:
$_GET[ ] – data transmitted via GET
$_POST[ ] – data transmitted via POST
$_COOKIE[ ] – received cookies
$_REQUEST[ ] – data retrieved from client(content of $_GET, $_POST and $_COOKIE)
$_SESSION[ ] – session data
![Page 160: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/160.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: web interaction
Other useful global variables:
$_SERVER[ ]
offers info about Web server
$_SERVER['PHP_SELF'] indicates the PHP script name$_SERVER['REQUEST_METHOD']
$_SERVER['HTTP_REFERER']
$_SERVER['HTTP_USER_AGENT']
www.php.net/manual/en/reserved.variables.server.php
![Page 161: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/161.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: web interaction
Other useful global variables:
$_ENV[ ] – data provided by the runtime environment
$_FILES[ ] – data about the uploaded fileswww.php.net/manual/en/features.file-upload.php
consult the example from the archive
![Page 162: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/162.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
<!-- a Web form written in HTML -->
<form action="display.php" method="post">
<input type="text" name="name" />
<input type="text" name="age" />
<input type="submit" value="Send" />
</form>
![Page 163: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/163.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
<!-- a Web form written in HTML -->
<form action="display.php" method="post">
<input type="text" name="name" />
<input type="text" name="age" />
<input type="submit" value="Send" />
</form>
<?php
// display.php – a program invoked via POST
if (!$_REQUEST["name"])
display ("Name is not specified!", "err");
else
display ("Name is" . $_REQUEST["name"]);
?>
each name field from the form represents a key in $_REQUEST [ ]
associative array (depending on the HTTP method, could be consulted by using $_GET or $_POST)
![Page 164: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/164.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: web sessions
Session management could be performed viasession_*() functions or using SessionHandler class
SessionHandler implements SessionHandlerInterface {
public bool open ( string $save_path , string $session_name )
public string create_sid ( void )
public string read ( string $session_id )
public bool write ( string $session_id , string $session_data )
public bool gc ( int $maxlifetime )
public bool destroy ( string $session_id )
public bool close ( void )
} php.net/manual/en/book.session.php
![Page 165: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/165.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
How databases could be accessed from PHP?
![Page 166: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/166.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: db
Native support for multiple database servers/technologies:
MongoDB – classes: MongoDB MongoClient MongoCursor
MySQL / MariaDB – mysqli classPostgreSQL – pg_*() functions
SQLite – SQLite3 classetc.
connections could be persistent
![Page 167: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/167.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: db – mysql
Functions/methods to access MySQL/MariaDBconnecting to server: mysql_connect (), mysql_pconnect ()
selecting (using) a database: mysql_select_db ()
executing a SQL statement: mysql_query ()
error reporting: mysql_errno (), mysql_error ()
getting results into an array: mysql_fetch_array ()
many others…
in the present, a deprecated approach – illegal in PHP 7
![Page 168: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/168.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: db – mysqli extension
Aim: easy and flexible access to MySQL/MariaDBfrom PHP5+ programs
facilitates code maintenance
compatible with MySQL API
alternative to mysql_*() functions
available docs at www.php.net/mysqli
![Page 169: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/169.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: db – mysqli extension
Procedural or object-oriented approach
Higher processing speed
Much better security
![Page 170: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/170.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: db – mysqli extension
Important methods:
initiating a connection to a MySQL server – mysqli ( )
issuing SQL statements – query ( ), prepare ( ), execute ( )
processing the response – fetch ( ), fetch_assoc ( )
closing connection – close ( )
etc.
![Page 171: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/171.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: db – example
Initially, we’ll create a MySQL account to assure authenticated access from PHP programs
to the students database:
(infoiasi)$ mysql –u root mysql
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE,
DROP ON students.* TO 'tux'@'localhost' IDENTIFIED BY
'pa$$w0Rd' WITH GRANT OPTION;
Query OK, 0 rows affected (0.11 sec)
![Page 172: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/172.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: db – example
Using the mysql client in command line orPHPMyAdmin, we create students table:
CREATE TABLE IF NOT EXISTS `students` (
`name` varchar(50) NOT NULL default '',
`year` enum('1','2','3') NOT NULL default '1',
`id` int(11) NOT NULL auto_increment,
`age` smallint(2) unsigned zerofill NOT NULL default '00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
AUTO_INCREMENT=1;
![Page 173: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/173.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
to ease DB administration, a Web tool could be usedphpMyAdmin – www.phpmyadmin.net/
creating a table
![Page 174: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/174.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
defining structure
![Page 175: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/175.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
visualizing the structure of
created table
![Page 176: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/176.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
optionally, inserting a record
![Page 177: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/177.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
visualizing existing data
![Page 178: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/178.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: db – mysqli extension
// a mysqli object instantiation
$mysql = new mysqli ('localhost', 'tux', 'pa$$w0Rd', 'students');
if (mysqli_connect_errno ()) {
die ('Failed connection...');
}
// specifying & executing a query
if (!($res = $mysql->query ('select name, year from students'))) {
die ('A query error occurred');
}
![Page 179: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/179.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: db – mysqli extension
// a mysqli object instantiation
$mysql = new mysqli ('localhost', 'tux', 'pa$$w0Rd', 'students');
if (mysqli_connect_errno ()) {
die ('Failed connection...');
}
// specifying & executing a query
if (!($res = $mysql->query ('select name, year from students'))) {
die ('A query error occurred');
}
!!!
![Page 180: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/180.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: db – mysqli extension
// generating a numbered list of student-related data// (HTML spaghetti code – not a recommended practice!)echo ('<ol>'); // results will be available into an associative arraywhile ($row = $res->fetch_assoc ()) {
// table column array keyecho ('<li>Student ' . $row['name'] .
' is enrolled in ' . $row['year'] . ' year</li>');} echo ('</ol>');
// closing connection to MySQL/Maria DB server$mysql->close ();
![Page 181: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/181.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: db
In practice, we’ll adopt an abstraction layer in order to access a storage system
DBAL – DataBase Abstraction Layer
![Page 182: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/182.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: db
In practice, we’ll adopt an abstraction layer in order to access a storage system
DBAL – DataBase Abstraction Layer
usual practice:PDO (PHP Data Objects)
pragmatic consideration in the tutorial available at https://phpdelusions.net/pdo
![Page 183: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/183.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: bd – extensia pdo
// connection data regarding MySQL/MariaDB database server$host = '127.0.0.1';$db = 'students';$user = 'tux';$pass = 'pa$$w0Rd'; // important: clear text password$charset = 'utf8';
// setting the DSN (Data Source Name)$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
// options concerning the connection manner$opt = [
// errors will be reported as exceptionsPDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,// results will be stored by an associative arrayPDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,// connection is persistentPDO::ATTR_PERSISTENT => TRUE
];
http://php.net/manual/en/book.pdo.php
![Page 184: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/184.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: bd – extensia pdo
// retrieve from the Web client the year of study (default: 2)$year = $_REQUEST['year'] ? $_REQUEST['year'] : 2;
try {$pdo = new PDO ($dsn, $user, $pass, $opt); // instantiating a PDO object
// preparing a parametrized SQL statement$sql = $pdo->prepare ('SELECT year, name, age FROM students
WHERE year=? ORDER BY age');
if ($sql->execute ([$year])) { // SQL statement can be executed?while ($row = $sql->fetch()) { // getting each found record
// ...and showing it (table column is a key of associative array)echo '<p>' . $row['name'] . ' is enrolled in ' . $row['year'] . ' year</p>';
}}
} catch (PDOException $e) {echo "Error: " . $e->getMessage(); // the message of occurred exception
};
![Page 185: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/185.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: bd – extensia pdo
A possible result provided by the execution of the PHP program invoked by using a URL as
http://profs.info.uaic.ro/~/busaco/php/pdo-test.php?year=2
Tuxy Pinguinesscool is enrolled in 2 year
Grace Hopper is enrolled in 2 year
Margaret Hamilton is enrolled in 2 year
study the script from the archive attached to
this lecture
![Page 186: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/186.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
php: db
Usually, an ORM – Object-Relational Mappingsolution (component, library)
will be used on top of DBA
examples of PHP tools: Doctrine – www.doctrine-project.org
Propel – propelorm.org
RedBeanPHP – redbeanphp.com
advanced
![Page 187: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/187.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
(instead of) break
![Page 188: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/188.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
Useful tools for Web developers?
![Page 189: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/189.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
instrumente
PEAR (PHP Extension and Application Repository)modules providing various features: pear.php.net
![Page 190: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/190.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
instrumente
PECL (PHP Extension Community Library)third party extensions: pecl.php.net
![Page 191: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/191.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: frameworks
Features:
MV* and various design patterns
database access (ORM, DAO, ActiveRecord,…)
input data validation and filtering
authentication + access control
cookie & session management
advanced
![Page 192: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/192.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: frameworks
Features:
data presentation – templating
performance – i.e. caching
asynchronous data transfer (Ajax, WebSocket)
support for Web services and REST APIs
extensibility – e.g., user-defined modules
advanced
![Page 193: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/193.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: frameworks
advanced
workflows performed by a framework
routing security appli-cationcon-troller
caching view🗎
.php
program
models
libraries
helpers
plugins
others
![Page 194: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/194.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: frameworks
CakePHP – cakephp.org
CodeIgniter – www.codeigniter.com
FuelPHP – fuelphp.com
Kohana – kohanaframework.org
Laravel – laravel.com
Nette – nette.org
Phalcon – phalconphp.com
PRADO – www.pradoframework.net
Symfony – symfony.com
Yii – www.yiiframework.com
Zend Framework – framework.zend.com
advanced
![Page 195: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/195.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
instrumente: framework-uri
├───application│ ├───cache│ ├───config│ ├───controllers│ ├───core│ ├───helpers│ ├───language│ ├───libraries│ ├───logs│ ├───models│ └───views│ └───errors│ ├───cli│ └───html├───system│ ├───core│ ├───database│ │ └───drivers│ │ ├───mysqli│ │ ├───pdo│ │ ├───...│ └───libraries│ ├───Cache│ ├───Javascript│ └───Session└───user_guide
advanced
directory structure of a Web application developed by using a MVC framework
CodeIgnitercodeigniter.com/docs
![Page 196: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/196.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
instrumente: framework-uri
advanced├─── app│ ├─── Commands│ ├─── Console│ ├─── Events│ ├─── Exceptions│ ├─── Handlers│ ├─── Http│ ├─── Providers│ ├─── Services│ └─── User.php├─── bootstrap│ ├─── app.php│ └─── autoload.php├─── config├─── database│ ├─── migrations│ └─── seeds├─── public├─── resources│ ├─── assets│ ├─── lang│ └─── views├─── server.php├─── storage└─── tests
directory structure of a Web application developed by using a MVC framework
Laravellaravel.com/docs/
![Page 197: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/197.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: micro-frameworks
A micro-framework representsa minimalist Web framework
advanced
![Page 198: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/198.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: micro-frameworks
A micro-framework representsa minimalist Web framework
does not include complex features
often, is focused on a single aspect regarding Web development – e.g., API, micro-service,…
advanced
![Page 199: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/199.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: micro-frameworks
Expressive – zendframework.github.io/zend-expressive/
Fat-Free – fatfreeframework.com
Flight – flightphp.com
Lumen – lumen.laravel.com
Slim – www.slimframework.com
Silex – silex.sensiolabs.org
advanced
![Page 200: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/200.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: packages
Managing dependences between libraries and packages
Composergetcomposer.org
www.phptherightway.com/#dependency_management
advanced
![Page 201: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/201.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
advanced
Packagistpackage repository
managed by Composerpackagist.org/
![Page 202: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/202.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: development environments
Pre-configured Web development environmentsWeb server + PHP + database server(s) + utils
Apache + PHP7 + MySQL/MongoDB + Perl/Python + ...AMPPS – www.ampps.com
XAMPP – www.apachefriends.org
Nginx + PHP7 + MariaDB + Redis + unelte de administrareWinNMP – winnmp.wtriple.com
![Page 203: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/203.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
instrumente
cloud-base development environments for PHP et al.Cloud9, Codenvy, Koding, Nitrous,…
![Page 204: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/204.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: online code execution
PHP program online editing & running
Ideone – ideone.com
PhpFiddle – phpfiddle.org
also, experiment SQL Fiddle – http://sqlfiddle.com/
![Page 205: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/205.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: documenting
advanced
Automatic documentation generators
ApiGen – www.apigen.org
Daux – daux.io
phpDocumentor – www.phpdoc.org
phpDox – phpdox.de
Sami – github.com/FriendsOfPHP/Sami
github.com/ziadoz/awesome-php#documentation
![Page 206: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/206.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: code analysis
PHP source-code static analysis
discovering various programming bugs, verifying the conformance to various coding standards
automatic correction (fixers)computing code metrics: complexity, number of lines,…
github.com/exakat/php-static-analysis-tools
advanced
![Page 207: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/207.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: code analysis
avansat
Detected violations with PSR2 standardsFOUND 6 ERROR(S) AFFECTING 4 LINE(S)----------------------------------------------------------------------5 | ERROR | Whitespace found at end of line8 | ERROR | Inline control structures are not allowed8 | ERROR | Whitespace found at end of line10 | ERROR | Whitespace found at end of line13 | ERROR | Expected 1 blank line at end of file; 0 found13 | ERROR | A closing tag is not permitted at the end of a PHP file----------------------------------------------------------------------
PSR – PHP Standards RecommendationsBasic Coding Standard, Coding Style Guide, Logger Interface,
Autoloading Standard, Caching Interface, HTTP Message Interface, Hypermedia Links, etc.
www.php-fig.org/psr/
![Page 208: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/208.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: testing
atoum – atoum.org
Codeception – codeception.com
ParaTest – github.com/brianium/paratest
Peridot – peridot-php.github.io
PHPUnit – phpunit.de
SimpleTest – github.com/simpletest
others at github.com/ziadoz/awesome-php#testing
advanced
![Page 209: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/209.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools: continuous integration
CircleCI – circleci.com
PHPCI – www.phptesting.org
Sismo – sismo.sensiolabs.org
github.com/ziadoz/awesome-php#continuous-integration
advanced
![Page 210: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/210.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
tools : accelerators
Caching of source files or opcodes + others
Zend Opcache – integrated in PHP 5.5+php.net/manual/en/book.opcache.php
also, experiment:APCu (Alternative PHP Cache + User Cache)
Windows Cache for PHP
avansat
![Page 211: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/211.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
extensions
Hack (Facebook, from 2014)a programming language for HHVM, extending PHP
goal: increasing the Web developer productivity
features: explicit data types (type annotations),generics, λ expressions, collections (Vector, Map, Set, Pair), tuples, asynchronous programming (async), and others
hacklang.org
advanced
![Page 212: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/212.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
major critics
lack of language formal specification(in progress since 2014)
inconsistency – e.g., foreach, predefined function names
lack of native support for Unicode (excepting PHP 7)
lack of native support for multi-threading, but possible via extensions like pthreads – pthreads.org
eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
www.quora.com/Criticism-of-PHP
![Page 213: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/213.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
critici majore
PHP Sadness – phpsadness.com
![Page 214: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/214.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
major critics
In PHP, we can easily create applicationsthat “adopt” Spaghetti Code anti-pattern
![Page 215: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/215.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
critici majoreHTML
Webinterface
PHP for data access andprocessing
PHP fordata presentation
git
hu
b.c
om
/han
afia
h/m
aste
rph
p/t
ree/
mas
ter/
spag
het
ti
![Page 216: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/216.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
case study: Wikipedia
![Page 217: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/217.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
case study: wikipedia
Aim: providing open content by using a group of collaborative Web applications – wikis
Wikipedia Foundationalso maintains Wiktionary, Wikinews, Wikibooks, Wikiquote, Wikisource, Wikiversity, Wikispecies,
Wikimedia Commons, Wikidata, Wikivoyageen.wikipedia.org/wiki/Wikimedia_Foundation
![Page 218: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/218.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
case study: wikipedia
MediaWiki (wiki system used for all services)PHP (platform that run MediaWiki on HHVM)
MySQL / MariaDB (main storage solution)ImageMagick, DjVu, TeX, rsvg, ploticus, etc.
(for graphical content processing within MediaWiki)Apache HTTP Server + NGINX (Web servers)
also provides an API to be used by Web developers:www.mediawiki.org/wiki/API:Main_page
![Page 219: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/219.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
case study: wikipedia
performance considerations:Varnish (proxy & caching for HTML content)
Memcached (database query caching)Elasticsearch (full-text search – Java implementation)
Swift (distributed object storage from OpenStack)gdnsd (C++ solution for DNS)
Linux Virtual Server – LVS load balancingDebian / Ubuntu Server (operating systems)
meta.wikimedia.org/wiki/Wikimedia_servers
advanced
![Page 220: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/220.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
studiu de caz: wikimedia
Wikipediainfrastructure
(2015)
avansat
![Page 221: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/221.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
case study
Various Web sites use Content Management Systems (CMS) developed in PHP
general: Drupal, Joomla, WordPress etc.
![Page 222: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/222.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
studii de caz
inspecting the technologies used by a Web application
with the WhatRuns tool
CMS can include extensions + themes
![Page 223: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/223.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
studii de caz
inspecting the technologies used by a Web application
with the WhatRuns tool
![Page 224: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/224.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
case study
Various Web sites use Content Management Systems (CMS) developed in PHP
wiki: DokuWiki, MediaWiki, pmWiki etc.
![Page 225: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/225.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
case study
Various Web sites use Content Management Systems (CMS) developed in PHP
for e-commerce: Magento, OpenCart, PrestaShop,…
![Page 226: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/226.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
inspecting the technologies used by a Web application with the WhatRuns tool
case study
![Page 227: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/227.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
case study
Various Web sites use Content Management Systems (CMS) developed in PHP
message board, Web forum: bbPress, esoTalk, phpBB,…
![Page 228: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/228.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
inspecting the technologies used by a Web application with the WhatRuns tool
studii de caz
![Page 229: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/229.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/“conclusion”
PHP overview
._ |_ ._
|_)| ||_)
| |
characteristics, features, tools
![Page 230: Web Technologies - profs.info.uaic.roandrei.panu/lectures/EN_web04-05Web...Perl –Catalyst, CGI::Application, Mojolicious PHP –PHP ... …](https://reader031.fdocuments.us/reader031/viewer/2022021507/5b0627717f8b9ac33f8c68ff/html5/thumbnails/230.jpg)
Dr.
Sab
in B
ura
ga
pro
fs.in
fo.uaic.ro/~busaco
/
next episode: a data model for Web: XML family
<event uri="https://stagiipebune.ro/">
<name xml:lang="ro">Stagii pe Bune</name>
<year>2017</year>
</event>
<participant>
<name uri="mailto:[email protected]">
Tuxy Pinguinnesscool</name>
<year kind="Bachelor">2</year>
</participant>