SlideShare a Scribd company logo
PHP Scripting language
Ludovico Antonio Muratori
Ci S.B.i.C. snc
Cesena, ITALY
PHP Stands for Hypertext Preprocessor
Php introduction
Agenda
1- Warm up revision about SQL & XAMPP 10 min
2- ppt teacher demonstrate about PHP 15m
3- Video about programing by PHP real life 5min
4- Practical work Students divided in groups and use
notepad / Atom , Dream weaver , any explorer to create
very simple dynamic web page 30 min
7- Questions and answers as pretest about PHP 5 min
8-Refelection 5 min
9- Home work 5 min
Warmp Up
Revision about SQL & XAMPP 10 min
Introduction to PHP
●“PHP is a server-side scripting language designed
specifically for the Web. Within an HTML page, you
can embed PHP code that will be executed each time
the page is visited. Your PHP code is interpreted at the
Web server and generates HTML or other output that
the visitor will see” (“PHP and MySQL Web
Development”, Luke Welling and Laura Thomson,
SAMS)
PHP History
● 1994: Created by Rasmis Lesdorf, software engineer (part
of Apache Team)
● 1995: Called Personal Home Page Tool, then released as
version 2 with name PHP/FI (Form Interpreter, to
analyze SQL queries)
● Half 1997: used by 50,000 web sites
● October 1998: used by 100,000 websites
● End 1999: used by 1,000,000 websites
Alternatives to PHP
● Practical extraction and Report Language (Perl)
● Active Server Pages (ASP)
● Java server pages (JSP)
● Ruby
(Good) Topics about PHP
● Open-source
● Easy to use ( C-like and Perl-like syntax)
● Stable and fast
● Multiplatform
● Many databases support
● Many common built-in libraries
● Pre-installed in Linux distributions
How PHP generates
HTML/JS Web pages
1: Client from browser send HTTP request (with POST/GET
variables)
2: Apache recognizes that a PHP script is requested and sends the
request to PHP module
3: PHP interpreter executes PHP script, collects script output and
sends it back
4: Apache replies to client using the PHP script output as HTML
output
2
Client
Browser
1 PHP
module
3
4
Apache
Hello World! (web oriented)
<html>
<head>
<title>My personal Hello World! PHP script</title>
</head>
<body>
<?
echo “Hello World!”;
?>
</html>
PHP tag, allow to insert PHP
code. Interpretation by PHP
module will substitute the code
with code output
Variables (I)
• To use or assign variable $ must be present before the name of the
variable
• The assign operator is '='
• There is no need to declare the type of the variable
• the current stored value produces an implicit type-casting of the
variable.
• A variable can be used before to be assigned
$A = 1;
$B = “2”;
$C = ($A + $B); // Integer sum
$D = $A . $B; // String concatenation
echo $C; // prints 3
echo $D;// prints 12
Variables (II)
• Function isset tests if a variable is assigned or not
$A = 1;
if (isset($A))
print “A isset”
if (!isset($B))
print “B is NOT set”;
• Using $$
$help = “hiddenVar”;
$$help = “hidden Value”;
echo $$help; // prints hidden Value
$$help = 10;
$help = $$help * $$help;
echo $help; // print 100
Strings (I)
• A string is a sequence of chars
$stringTest = “this is a sequence of chars”;
echo $stringTest[0]; output: t
echo $stringTest; output: this is a sequence of chars
• A single quoted strings is displayed “as-is”
$age = 37;
$stringTest = 'I am $age years old'; // output: I am $age years old
$stringTest = “I am $age years old”; // output: I am 37 years old
• Concatenation
$conc = ”is “.”a “.”composed “.”string”;
echo $conc; // output: is a composed string
$newConc = 'Also $conc '.$conc;
echo $newConc; // output: Also $conc is a composed string
Strings (II)
• Explode function
$sequence = “A,B,C,D,E,F,G”;
$elements = explode (“,”,$sequence);
// Now elements is an array with all substrings between “,”
char
echo $elemets[0]; // output: A;
echo $elemets[1]; // output: B;
echo $elemets[2]; // output: C;
echo $elemets[3]; // output: D;
echo $elemets[4]; // output: E;
echo $elemets[5]; // output: F;
echo $elemets[6]; // output: G;
Arrays (I)
• Groups a set of variables, every element stored into an array as
an associated key (index to retrieve the element)
$books = array( 0=>”php manual”,1=>”perl manual”,2=>”C
manual”);
$books = array( 0=>”php manual”,” perl manual”,”C manual”);
$books = array (“php manual”,”perl manual”,”C manual”);
echo $books[2]; output: C manual
• Arrays with PHP are associative
$books = array( “php manual”=>1,”perl manual”=>1,”C
manual”=>1); // HASH
echo $books[“perl manual”]; output: 1
$books[“lisp manual”] = 1; // Add a new element
Working on an arrays
$books = array( ”php manual”,”perl manual” ,”C manual”);
Common loop
for ($i=0; $i < count($books); $i++)
print ($i+1).”-st book of my library: $books[$i]”;
each
$books = array( “php manual”=>1,”perl manual”=>2,”C manual”=>3);
while ($item = each( $books )) // Retrieve items one by one
print $item[“value”].”-st book of my library: ”.$item[“key”];
// each retrieve an array of two elements with key and value of current element
each and list
while ( list($value,$key) = each( $books ))
print “$value-st book of my library: $key”;
// list collect the two element retrieved by each and store them in two different // variables
Arrays (II)
Arrays (III)
• Multidimensional arrays
$books = array( array(“title”=>“php manual”,”editor”=>”X”,”author”=>”A”),
array(“title”=>“perl manual”,”editor”=>”Y”,”author”=>”B”),
array(“title=>“C manual”,”editor”=>”Z”,author=>”C”));
• Common loop
for ($i=0; $i < count($books); $i++ )
print “$i-st book, title: ”.$books[$i][“title”].” author: “.$books[$i][“author”].
“ editor: “.$books[$i][“editor”];
// Add .”n” for text new page or “.<BR>” for HTML new page;
• Use list and each
for ($i=0; $i < count($books); $i++)
{
print “$i-st book is: “;
while ( list($key,$value) = each( $books[$i] ))
print “$key: $value ”;
print “<BR>”; // or “n”
}
Case study (small database I)
• You need to build one or more web pages to manage your library, but:
– “You have no time or no knoledge on how to plan and design
database”
– or “You have no time or knolwdge on how to install a free
database”
– And “The database to implement is small” (about few
thousands entries, but depends on server configuration)
Case study (small database II)
#cat /usr/local/myDatabaseDirectory/library.txt
php manual X A 330
perl manual Y B 540
C manual Z C 480
(fields separated by tabs: 'php manual<tab>X<tab>A', new line at the end of each
entry)
<? // script to show all book in my library
$books = file(“/usr/local/myDatabaseDirectory/library.txt”); // retrieve library “database”
for ($i=0; $i<count($books), $i++ )
$books_array[$i] = explode( “t”, $books[$i]); // Extract elements from line
...
for ($i=0; $i<count($books_array), $i++ )
print “$i-st book, title: ”.$books_array[$i][“title”].” author: “.$books_array[$i][“author”].
“ editor: “.$books_array[$i][“editor”].”<BR>”;
Case study
A way to reuse code (I)
Using functions is possible to write more general code, to allow us to
reuse it to add feature:
– For the same project (always try to write reusable code, also you
will work for a short time on a project)
– For new projects
<? // config.php, is a good idea to use configuration files
$tableFiles = array ( “books”=>”/usr/local/myDatabaseDirectory/books.txt”);
$bookTableFields = array (“title”,”author”,”editor”,”pages”);
// future development of the library project (add new tables)
$tableFiles = array ( “users”=>”/usr/local/myDatabaseDirectory/users.txt”);
$userTableFields = array (“code”,“firstName”,”lastName”,”age”,”institute”);
?>
Case study
A way to reuse code (II)
<? // script to show all book in my library
$books = file(“/usr/local/myDatabaseDirectory/library.txt”);
// retrieve library “database”
for ($i=0; $i<count($books), $i++ )
$books_array[$i] = explode( “t”, $books[$i]); // Extract elements from line
...
for ($i=0; $i<count($books_array), $i++ )
print “$i-st book, title: ”.$books_array[$i][“title”].” author:
“.$books_array[$i][“author”].
“ editor: “.$books_array[$i][“editor”].”<BR>”;
Functions in details (I)
The syntax to implement a user-defined
function is :
function function_name([parameters-list]opt)
{……implementation code……}
parameters-list is a sequence of variables separated by “,”
• it’s not allowed to overload the name of an existing function;
• Function names aren’t case-sensitive;
• To each parameter can be assigned a default value;
• arguments can be passed by value or by reference
• It’s possible using a variable number of parameters
•
Object Oriented PHP
● Encapsulation
● Polymorphism
● Inheritance
● Multiple Inheritance: actually unsupported
Encapsulation
<?
class dayOfWeek {
var $day,$month,$year;
function dayOfWeek($day,$month,$year) {
$this->day = $day;
$this->month = $month;
$this->year = $year;
}
function calculate(){
if ($this->month==1){
$monthTmp=13;
$yearTmp = $this->year - 1;
}
if ($this->month == 2){
$monthTmp = 14;
$yearTmp = $this->year - 1;
}
$val4 = (($month+1)*3)/5;
$val5 = $year/4;
$val6 = $year/100;
$val7 = $year/400;
$val8 = $day+($month*2)+$val4+$val3+$val5-
$val6+$val7+2;
$val9 = $val8/7;
$val0 = $val8-($val9*7);
return $val0;
}
}
// Main
$instance =
new dayOfWeek($_GET[“day”],$_GET[“week”],$_GET[“
month”]);
print “You born on “.$instance->calculate().”n”;
?>
Allow the creation of a hierarchy of classes
Inheritance
Class reuseMe {
function
reuseMe(){...}
function
doTask1(){...}
function
doTask2(){...}
function
doTask3(){...}
}
Class extends reuseMe {
function example(){
... // local initializations
// call super constructor
reuseMe::reuseMe();
}
function doTask4(){...}
function doTask5(){...}
function doTask6(){...}
}
Polymorphism
Class extends reuseMe {
function example(){
... // local initializations
// call super constructor
reuseMe::reuseMe();
}
function doTask4(){...}
function doTask5(){...}
function doTask6(){...}
function doTask3(){...}
}
class reuseMe {
function
reuseMe(){...}
function
doTask1(){...}
function
doTask2(){...}
function
doTask3(){...}
}
A member function can override superclass
implementation. Allow each subclass to
reimplement a common interfaces.
Multiple Inheritance not actually supported by
PHP
class extends reuseMe1,reuseMe2 {...}
class reuseMe1 {
function reuseMe1(){...}
function doTask1(){...}
function doTask2(){...}
function doTask3(){...}
}
class reuseMe2 {
function reuseMe2(){...}
function doTask3(){...}
function doTask4(){...}
function doTask5(){...}
}
Bibliography
[1] “PHP and MySQL Web Development”, Luke Welling and Laura
Thomson, SA

More Related Content

What's hot (20)

PDF
Introducing Assetic (NYPHP)
Kris Wallsmith
 
PPT
Intro to PHP
Sandy Smith
 
PPTX
New in php 7
Vic Metcalfe
 
PDF
Doctrine MongoDB ODM (PDXPHP)
Kris Wallsmith
 
KEY
solving little problems
removed_e334947d661d520b05c7f698a45590c4
 
PDF
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Kacper Gunia
 
PDF
Symfony2 - WebExpo 2010
Fabien Potencier
 
TXT
My shell
Ahmed Salah
 
PDF
Modern php
Charles Anderson
 
ODP
Symfony CMF - PHP Conference Brazil 2011
Jacopo Romei
 
ZIP
Web Apps in Perl - HTTP 101
hendrikvb
 
PDF
An Introduction to Symfony
xopn
 
PDF
Symfony War Stories
Jakub Zalas
 
PDF
Perl web frameworks
diego_k
 
PPTX
Zero to SOLID
Vic Metcalfe
 
PPTX
PHP Basics and Demo HackU
Anshu Prateek
 
PDF
Symfony components in the wild, PHPNW12
Jakub Zalas
 
ODP
The promise of asynchronous PHP
Wim Godden
 
PDF
Mojolicious
Marcos Rebelo
 
KEY
Mojo as a_client
Marcus Ramberg
 
Introducing Assetic (NYPHP)
Kris Wallsmith
 
Intro to PHP
Sandy Smith
 
New in php 7
Vic Metcalfe
 
Doctrine MongoDB ODM (PDXPHP)
Kris Wallsmith
 
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Kacper Gunia
 
Symfony2 - WebExpo 2010
Fabien Potencier
 
My shell
Ahmed Salah
 
Modern php
Charles Anderson
 
Symfony CMF - PHP Conference Brazil 2011
Jacopo Romei
 
Web Apps in Perl - HTTP 101
hendrikvb
 
An Introduction to Symfony
xopn
 
Symfony War Stories
Jakub Zalas
 
Perl web frameworks
diego_k
 
Zero to SOLID
Vic Metcalfe
 
PHP Basics and Demo HackU
Anshu Prateek
 
Symfony components in the wild, PHPNW12
Jakub Zalas
 
The promise of asynchronous PHP
Wim Godden
 
Mojolicious
Marcos Rebelo
 
Mojo as a_client
Marcus Ramberg
 

Similar to Php introduction (20)

PPTX
Day1
IRWAA LLC
 
PPT
Php mysql
Ajit Yadav
 
PPT
PHP and MySQL with snapshots
richambra
 
PPT
Php classes in mumbai
Vibrant Technologies & Computers
 
PPT
PHP Workshop Notes
Pamela Fox
 
PPT
PHP
sometech
 
PPT
Synapseindia reviews sharing intro on php
SynapseindiaComplaints
 
PPT
Synapseindia reviews sharing intro on php
SynapseindiaComplaints
 
PPT
Synapseindia reviews on array php
saritasingh19866
 
PPT
Building an e:commerce site with PHP
webhostingguy
 
PPT
Phpwebdevelping
mohamed ashraf
 
PPT
Training on php by cyber security infotech (csi)
Cyber Security Infotech Pvt. Ltd.
 
PPTX
Jquery in web development, including Jquery in HTML
backiyalakshmi14
 
PDF
Winter%200405%20-%20Beginning%20PHP
tutorialsruby
 
PDF
Winter%200405%20-%20Beginning%20PHP
tutorialsruby
 
PPT
PHP - Introduction to PHP
Vibrant Technologies & Computers
 
PPT
introduction to php web programming 2024.ppt
idaaryanie
 
PPT
05php
Shahid Usman
 
PPT
PHP - Introduction to PHP - Mazenet Solution
Mazenetsolution
 
PPTX
Ch1(introduction to php)
Chhom Karath
 
Day1
IRWAA LLC
 
Php mysql
Ajit Yadav
 
PHP and MySQL with snapshots
richambra
 
Php classes in mumbai
Vibrant Technologies & Computers
 
PHP Workshop Notes
Pamela Fox
 
Synapseindia reviews sharing intro on php
SynapseindiaComplaints
 
Synapseindia reviews sharing intro on php
SynapseindiaComplaints
 
Synapseindia reviews on array php
saritasingh19866
 
Building an e:commerce site with PHP
webhostingguy
 
Phpwebdevelping
mohamed ashraf
 
Training on php by cyber security infotech (csi)
Cyber Security Infotech Pvt. Ltd.
 
Jquery in web development, including Jquery in HTML
backiyalakshmi14
 
Winter%200405%20-%20Beginning%20PHP
tutorialsruby
 
Winter%200405%20-%20Beginning%20PHP
tutorialsruby
 
PHP - Introduction to PHP
Vibrant Technologies & Computers
 
introduction to php web programming 2024.ppt
idaaryanie
 
PHP - Introduction to PHP - Mazenet Solution
Mazenetsolution
 
Ch1(introduction to php)
Chhom Karath
 
Ad

More from Osama Ghandour Geris (20)

PPTX
functions in python By Eng. Osama Ghandour الدوال فى البايثون مع مهندس اسامه ...
Osama Ghandour Geris
 
PPT
Python week 5 2019-2020 for G10 by Eng.Osama Ghandour.ppt
Osama Ghandour Geris
 
PPT
Python cs.1.12 week 10 2020 2021 covid 19 for g10 by eng.osama mansour
Osama Ghandour Geris
 
PPT
Python cs.1.12 week 9 10 2020-2021 covid 19 for g10 by eng.osama ghandour
Osama Ghandour Geris
 
PPT
Python week 7 8 2019-2020 for grade 10
Osama Ghandour Geris
 
PPT
Python week 6 2019 2020 for grade 10
Osama Ghandour Geris
 
PPT
Python week 5 2019 2020 for g10 by eng.osama ghandour
Osama Ghandour Geris
 
PPT
Python week 4 2019 2020 for g10 by eng.osama ghandour
Osama Ghandour Geris
 
PPTX
Programming intro variables constants - arithmetic and assignment operators
Osama Ghandour Geris
 
PPT
Mobile appliaction w android week 1 by osama
Osama Ghandour Geris
 
PPT
Python week 1 2020-2021
Osama Ghandour Geris
 
PPT
6 css week12 2020 2021 for g10
Osama Ghandour Geris
 
PPT
Css week11 2020 2021 for g10 by eng.osama ghandour
Osama Ghandour Geris
 
PPTX
Cooding history
Osama Ghandour Geris
 
PPT
Computer networks--network
Osama Ghandour Geris
 
PPTX
How to print a sketch up drawing in 3d
Osama Ghandour Geris
 
PPT
Google sketch up-tutorial
Osama Ghandour Geris
 
PPTX
7 types of presentation styles on line
Osama Ghandour Geris
 
PPT
Design pseudo codeweek 6 2019 -2020
Osama Ghandour Geris
 
PPT
How to use common app
Osama Ghandour Geris
 
functions in python By Eng. Osama Ghandour الدوال فى البايثون مع مهندس اسامه ...
Osama Ghandour Geris
 
Python week 5 2019-2020 for G10 by Eng.Osama Ghandour.ppt
Osama Ghandour Geris
 
Python cs.1.12 week 10 2020 2021 covid 19 for g10 by eng.osama mansour
Osama Ghandour Geris
 
Python cs.1.12 week 9 10 2020-2021 covid 19 for g10 by eng.osama ghandour
Osama Ghandour Geris
 
Python week 7 8 2019-2020 for grade 10
Osama Ghandour Geris
 
Python week 6 2019 2020 for grade 10
Osama Ghandour Geris
 
Python week 5 2019 2020 for g10 by eng.osama ghandour
Osama Ghandour Geris
 
Python week 4 2019 2020 for g10 by eng.osama ghandour
Osama Ghandour Geris
 
Programming intro variables constants - arithmetic and assignment operators
Osama Ghandour Geris
 
Mobile appliaction w android week 1 by osama
Osama Ghandour Geris
 
Python week 1 2020-2021
Osama Ghandour Geris
 
6 css week12 2020 2021 for g10
Osama Ghandour Geris
 
Css week11 2020 2021 for g10 by eng.osama ghandour
Osama Ghandour Geris
 
Cooding history
Osama Ghandour Geris
 
Computer networks--network
Osama Ghandour Geris
 
How to print a sketch up drawing in 3d
Osama Ghandour Geris
 
Google sketch up-tutorial
Osama Ghandour Geris
 
7 types of presentation styles on line
Osama Ghandour Geris
 
Design pseudo codeweek 6 2019 -2020
Osama Ghandour Geris
 
How to use common app
Osama Ghandour Geris
 
Ad

Recently uploaded (20)

PDF
The Constitution Review Committee (CRC) has released an updated schedule for ...
nservice241
 
PDF
Characteristics, Strengths and Weaknesses of Quantitative Research.pdf
Thelma Villaflores
 
PDF
Week 2 - Irish Natural Heritage Powerpoint.pdf
swainealan
 
PPTX
Difference between write and update in odoo 18
Celine George
 
PDF
Governor Josh Stein letter to NC delegation of U.S. House
Mebane Rash
 
PDF
Women's Health: Essential Tips for Every Stage.pdf
Iftikhar Ahmed
 
PDF
STATEMENT-BY-THE-HON.-MINISTER-FOR-HEALTH-ON-THE-COVID-19-OUTBREAK-AT-UG_revi...
nservice241
 
PDF
Biological Bilingual Glossary Hindi and English Medium
World of Wisdom
 
PDF
Chapter-V-DED-Entrepreneurship: Institutions Facilitating Entrepreneurship
Dayanand Huded
 
PDF
The History of Phone Numbers in Stoke Newington by Billy Thomas
History of Stoke Newington
 
PPTX
Identifying elements in the story. Arrange the events in the story
geraldineamahido2
 
PPTX
Controller Request and Response in Odoo18
Celine George
 
PPTX
How to Create a Customer From Website in Odoo 18.pptx
Celine George
 
PPTX
care of patient with elimination needs.pptx
Rekhanjali Gupta
 
PPTX
Universal immunization Programme (UIP).pptx
Vishal Chanalia
 
PPTX
How to Send Email From Odoo 18 Website - Odoo Slides
Celine George
 
PPTX
DIGITAL CITIZENSHIP TOPIC TLE 8 MATATAG CURRICULUM
ROBERTAUGUSTINEFRANC
 
PDF
Stokey: A Jewish Village by Rachel Kolsky
History of Stoke Newington
 
PDF
Mahidol_Change_Agent_Note_2025-06-27-29_MUSEF
Tassanee Lerksuthirat
 
PDF
Exploring the Different Types of Experimental Research
Thelma Villaflores
 
The Constitution Review Committee (CRC) has released an updated schedule for ...
nservice241
 
Characteristics, Strengths and Weaknesses of Quantitative Research.pdf
Thelma Villaflores
 
Week 2 - Irish Natural Heritage Powerpoint.pdf
swainealan
 
Difference between write and update in odoo 18
Celine George
 
Governor Josh Stein letter to NC delegation of U.S. House
Mebane Rash
 
Women's Health: Essential Tips for Every Stage.pdf
Iftikhar Ahmed
 
STATEMENT-BY-THE-HON.-MINISTER-FOR-HEALTH-ON-THE-COVID-19-OUTBREAK-AT-UG_revi...
nservice241
 
Biological Bilingual Glossary Hindi and English Medium
World of Wisdom
 
Chapter-V-DED-Entrepreneurship: Institutions Facilitating Entrepreneurship
Dayanand Huded
 
The History of Phone Numbers in Stoke Newington by Billy Thomas
History of Stoke Newington
 
Identifying elements in the story. Arrange the events in the story
geraldineamahido2
 
Controller Request and Response in Odoo18
Celine George
 
How to Create a Customer From Website in Odoo 18.pptx
Celine George
 
care of patient with elimination needs.pptx
Rekhanjali Gupta
 
Universal immunization Programme (UIP).pptx
Vishal Chanalia
 
How to Send Email From Odoo 18 Website - Odoo Slides
Celine George
 
DIGITAL CITIZENSHIP TOPIC TLE 8 MATATAG CURRICULUM
ROBERTAUGUSTINEFRANC
 
Stokey: A Jewish Village by Rachel Kolsky
History of Stoke Newington
 
Mahidol_Change_Agent_Note_2025-06-27-29_MUSEF
Tassanee Lerksuthirat
 
Exploring the Different Types of Experimental Research
Thelma Villaflores
 

Php introduction

  • 1. PHP Scripting language Ludovico Antonio Muratori Ci S.B.i.C. snc Cesena, ITALY PHP Stands for Hypertext Preprocessor
  • 3. Agenda 1- Warm up revision about SQL & XAMPP 10 min 2- ppt teacher demonstrate about PHP 15m 3- Video about programing by PHP real life 5min 4- Practical work Students divided in groups and use notepad / Atom , Dream weaver , any explorer to create very simple dynamic web page 30 min 7- Questions and answers as pretest about PHP 5 min 8-Refelection 5 min 9- Home work 5 min
  • 4. Warmp Up Revision about SQL & XAMPP 10 min
  • 5. Introduction to PHP ●“PHP is a server-side scripting language designed specifically for the Web. Within an HTML page, you can embed PHP code that will be executed each time the page is visited. Your PHP code is interpreted at the Web server and generates HTML or other output that the visitor will see” (“PHP and MySQL Web Development”, Luke Welling and Laura Thomson, SAMS)
  • 6. PHP History ● 1994: Created by Rasmis Lesdorf, software engineer (part of Apache Team) ● 1995: Called Personal Home Page Tool, then released as version 2 with name PHP/FI (Form Interpreter, to analyze SQL queries) ● Half 1997: used by 50,000 web sites ● October 1998: used by 100,000 websites ● End 1999: used by 1,000,000 websites
  • 7. Alternatives to PHP ● Practical extraction and Report Language (Perl) ● Active Server Pages (ASP) ● Java server pages (JSP) ● Ruby
  • 8. (Good) Topics about PHP ● Open-source ● Easy to use ( C-like and Perl-like syntax) ● Stable and fast ● Multiplatform ● Many databases support ● Many common built-in libraries ● Pre-installed in Linux distributions
  • 9. How PHP generates HTML/JS Web pages 1: Client from browser send HTTP request (with POST/GET variables) 2: Apache recognizes that a PHP script is requested and sends the request to PHP module 3: PHP interpreter executes PHP script, collects script output and sends it back 4: Apache replies to client using the PHP script output as HTML output 2 Client Browser 1 PHP module 3 4 Apache
  • 10. Hello World! (web oriented) <html> <head> <title>My personal Hello World! PHP script</title> </head> <body> <? echo “Hello World!”; ?> </html> PHP tag, allow to insert PHP code. Interpretation by PHP module will substitute the code with code output
  • 11. Variables (I) • To use or assign variable $ must be present before the name of the variable • The assign operator is '=' • There is no need to declare the type of the variable • the current stored value produces an implicit type-casting of the variable. • A variable can be used before to be assigned $A = 1; $B = “2”; $C = ($A + $B); // Integer sum $D = $A . $B; // String concatenation echo $C; // prints 3 echo $D;// prints 12
  • 12. Variables (II) • Function isset tests if a variable is assigned or not $A = 1; if (isset($A)) print “A isset” if (!isset($B)) print “B is NOT set”; • Using $$ $help = “hiddenVar”; $$help = “hidden Value”; echo $$help; // prints hidden Value $$help = 10; $help = $$help * $$help; echo $help; // print 100
  • 13. Strings (I) • A string is a sequence of chars $stringTest = “this is a sequence of chars”; echo $stringTest[0]; output: t echo $stringTest; output: this is a sequence of chars • A single quoted strings is displayed “as-is” $age = 37; $stringTest = 'I am $age years old'; // output: I am $age years old $stringTest = “I am $age years old”; // output: I am 37 years old • Concatenation $conc = ”is “.”a “.”composed “.”string”; echo $conc; // output: is a composed string $newConc = 'Also $conc '.$conc; echo $newConc; // output: Also $conc is a composed string
  • 14. Strings (II) • Explode function $sequence = “A,B,C,D,E,F,G”; $elements = explode (“,”,$sequence); // Now elements is an array with all substrings between “,” char echo $elemets[0]; // output: A; echo $elemets[1]; // output: B; echo $elemets[2]; // output: C; echo $elemets[3]; // output: D; echo $elemets[4]; // output: E; echo $elemets[5]; // output: F; echo $elemets[6]; // output: G;
  • 15. Arrays (I) • Groups a set of variables, every element stored into an array as an associated key (index to retrieve the element) $books = array( 0=>”php manual”,1=>”perl manual”,2=>”C manual”); $books = array( 0=>”php manual”,” perl manual”,”C manual”); $books = array (“php manual”,”perl manual”,”C manual”); echo $books[2]; output: C manual • Arrays with PHP are associative $books = array( “php manual”=>1,”perl manual”=>1,”C manual”=>1); // HASH echo $books[“perl manual”]; output: 1 $books[“lisp manual”] = 1; // Add a new element
  • 16. Working on an arrays $books = array( ”php manual”,”perl manual” ,”C manual”); Common loop for ($i=0; $i < count($books); $i++) print ($i+1).”-st book of my library: $books[$i]”; each $books = array( “php manual”=>1,”perl manual”=>2,”C manual”=>3); while ($item = each( $books )) // Retrieve items one by one print $item[“value”].”-st book of my library: ”.$item[“key”]; // each retrieve an array of two elements with key and value of current element each and list while ( list($value,$key) = each( $books )) print “$value-st book of my library: $key”; // list collect the two element retrieved by each and store them in two different // variables Arrays (II)
  • 17. Arrays (III) • Multidimensional arrays $books = array( array(“title”=>“php manual”,”editor”=>”X”,”author”=>”A”), array(“title”=>“perl manual”,”editor”=>”Y”,”author”=>”B”), array(“title=>“C manual”,”editor”=>”Z”,author=>”C”)); • Common loop for ($i=0; $i < count($books); $i++ ) print “$i-st book, title: ”.$books[$i][“title”].” author: “.$books[$i][“author”]. “ editor: “.$books[$i][“editor”]; // Add .”n” for text new page or “.<BR>” for HTML new page; • Use list and each for ($i=0; $i < count($books); $i++) { print “$i-st book is: “; while ( list($key,$value) = each( $books[$i] )) print “$key: $value ”; print “<BR>”; // or “n” }
  • 18. Case study (small database I) • You need to build one or more web pages to manage your library, but: – “You have no time or no knoledge on how to plan and design database” – or “You have no time or knolwdge on how to install a free database” – And “The database to implement is small” (about few thousands entries, but depends on server configuration)
  • 19. Case study (small database II) #cat /usr/local/myDatabaseDirectory/library.txt php manual X A 330 perl manual Y B 540 C manual Z C 480 (fields separated by tabs: 'php manual<tab>X<tab>A', new line at the end of each entry) <? // script to show all book in my library $books = file(“/usr/local/myDatabaseDirectory/library.txt”); // retrieve library “database” for ($i=0; $i<count($books), $i++ ) $books_array[$i] = explode( “t”, $books[$i]); // Extract elements from line ... for ($i=0; $i<count($books_array), $i++ ) print “$i-st book, title: ”.$books_array[$i][“title”].” author: “.$books_array[$i][“author”]. “ editor: “.$books_array[$i][“editor”].”<BR>”;
  • 20. Case study A way to reuse code (I) Using functions is possible to write more general code, to allow us to reuse it to add feature: – For the same project (always try to write reusable code, also you will work for a short time on a project) – For new projects <? // config.php, is a good idea to use configuration files $tableFiles = array ( “books”=>”/usr/local/myDatabaseDirectory/books.txt”); $bookTableFields = array (“title”,”author”,”editor”,”pages”); // future development of the library project (add new tables) $tableFiles = array ( “users”=>”/usr/local/myDatabaseDirectory/users.txt”); $userTableFields = array (“code”,“firstName”,”lastName”,”age”,”institute”); ?>
  • 21. Case study A way to reuse code (II) <? // script to show all book in my library $books = file(“/usr/local/myDatabaseDirectory/library.txt”); // retrieve library “database” for ($i=0; $i<count($books), $i++ ) $books_array[$i] = explode( “t”, $books[$i]); // Extract elements from line ... for ($i=0; $i<count($books_array), $i++ ) print “$i-st book, title: ”.$books_array[$i][“title”].” author: “.$books_array[$i][“author”]. “ editor: “.$books_array[$i][“editor”].”<BR>”;
  • 22. Functions in details (I) The syntax to implement a user-defined function is : function function_name([parameters-list]opt) {……implementation code……} parameters-list is a sequence of variables separated by “,” • it’s not allowed to overload the name of an existing function; • Function names aren’t case-sensitive; • To each parameter can be assigned a default value; • arguments can be passed by value or by reference • It’s possible using a variable number of parameters •
  • 23. Object Oriented PHP ● Encapsulation ● Polymorphism ● Inheritance ● Multiple Inheritance: actually unsupported
  • 24. Encapsulation <? class dayOfWeek { var $day,$month,$year; function dayOfWeek($day,$month,$year) { $this->day = $day; $this->month = $month; $this->year = $year; } function calculate(){ if ($this->month==1){ $monthTmp=13; $yearTmp = $this->year - 1; } if ($this->month == 2){ $monthTmp = 14; $yearTmp = $this->year - 1; } $val4 = (($month+1)*3)/5; $val5 = $year/4; $val6 = $year/100; $val7 = $year/400; $val8 = $day+($month*2)+$val4+$val3+$val5- $val6+$val7+2; $val9 = $val8/7; $val0 = $val8-($val9*7); return $val0; } } // Main $instance = new dayOfWeek($_GET[“day”],$_GET[“week”],$_GET[“ month”]); print “You born on “.$instance->calculate().”n”; ?>
  • 25. Allow the creation of a hierarchy of classes Inheritance Class reuseMe { function reuseMe(){...} function doTask1(){...} function doTask2(){...} function doTask3(){...} } Class extends reuseMe { function example(){ ... // local initializations // call super constructor reuseMe::reuseMe(); } function doTask4(){...} function doTask5(){...} function doTask6(){...} }
  • 26. Polymorphism Class extends reuseMe { function example(){ ... // local initializations // call super constructor reuseMe::reuseMe(); } function doTask4(){...} function doTask5(){...} function doTask6(){...} function doTask3(){...} } class reuseMe { function reuseMe(){...} function doTask1(){...} function doTask2(){...} function doTask3(){...} } A member function can override superclass implementation. Allow each subclass to reimplement a common interfaces.
  • 27. Multiple Inheritance not actually supported by PHP class extends reuseMe1,reuseMe2 {...} class reuseMe1 { function reuseMe1(){...} function doTask1(){...} function doTask2(){...} function doTask3(){...} } class reuseMe2 { function reuseMe2(){...} function doTask3(){...} function doTask4(){...} function doTask5(){...} }
  • 28. Bibliography [1] “PHP and MySQL Web Development”, Luke Welling and Laura Thomson, SA