Table of Contents
~~SLIDESHOW~~
Introduction to PHP (Part 1)
Supplementary Material
Provided for Reference. This material is no longer taught on this module.
Lecturer: Dr Chris P. Jobling.
An introduction to PHP, one of the most popular server-side scripting languages for web applications.
Introduction to PHP (Part 1)
PHP is rapidly becoming the favourite language for server-side web applications development. In this lecture we introduce the language and some of its features. To set PHP in context, you should study this lecture in conjunction with the Introduction to JavaScript.
Based on Chapter 12 of Robert W. Sebasta, Programming the World-Wide Web, 3rd Edition, Addison Wesley, 2006. and Chapter 12 of Chris Bates, Web Programming: Building Internet Applications, 3rd Edition, John Wiley, 2006.
Contents of this Lecture
Introduction to PHP with examples
Learning Outcomes
At the end of this lecture you should be able to answer these questions:
- How does a web server determine whether a requested document includes PHP code
- What are the two modes of the PHP processor?
- What are the syntax and semantics of the include construct?
- Which parts of PHP are case sensitive and which are not?
- What are the four scalar types of PHP?
Learning Outcomes (continued)
At the end of this lecture you should be able to answer these questions:
- How can a variable be tested to determine whether it is bound
- How can you specify to the PHP processor that you want uses of unbound variables to be reported
- How many bytes are used to store a character in PHP?
- What are the differences between single- and double-quoted literal strings
Learning Outcomes (continued)
At the end of this lecture you should be able to answer these questions:
- If an integer expression appears in Boolean context, how is its Boolean value determined?
- What happens when an integer arithmetic operation results in a value that cannot be represented as an integer?
- If a variable stores a string, how can the character at a specific position in that string be referenced?
- What does the
chop
function do? - What is a coercion?
Learning Outcomes (continued)
At the end of this lecture you should be able to answer these questions:
- What are the three ways the value of a variable can be explicitly coerced to a specific type
- How can the type of a variable be determined?
- If a string is compared with a number, what happens?
- What is the advantage of using the unique closing reserved words such as
endwhile
?
Origins and Uses of PHP
- Developed by Rasmus Lerdorf in 1994 to allow him to track visitors to his Web site
- PHP is an acronym for Personal Home Page, or PHP: Hypertext Preprocessor
- PHP is an open-source product
- PHP is used for form handling, file processing, and database access
Overview of PHP
- PHP is a server-side scripting language whose scripts are embedded in HTML documents
- PHP is an alternative to CGI, ASP.NET, JSP, and Allaire's ColdFusion
- The PHP processor has two modes: copy (HTML) and interpret (PHP)
- PHP syntax is similar to that of JavaScript
- PHP is dynamically typed
- PHP is purely interpreted
General Syntactic Characteristics
- PHP code can be specified in an HTML document internally or externally:
- Internally:
<?php … ?>
- Externally:
include (“myScript.inc”)
- The file can contain both PHP and HTML
- If the file contains PHP, the PHP must be enclosed in tags
<?php … ?>
, even if the include statement is already in<?php … ?>
- Every variable name begins with a
$
General Syntactic Characteristics (continued)
- Three different kinds of comments (Java and Perl):
// JavaScript-like inline comment # perl-like inline comment /* Java-like block comment */
- Compound statements are formed with braces
- Compound statements are not blocks
explanation: a block is defined as code for which variables defined between braces (not function bodies), are local to the enclosing block. Java has this property but JavaScript and PHP do not.
Primitives, Operations, and Expressions
Variables
- There are no type declarations
- An unassigned (unbound) variable has the value
NULL
- The
unset
function sets a variable toNULL
- The
IsSet
function is used to determine whether a variable isNULL
error_reporting(15);
– prevents PHP from using unbound variables- PHP has many predefined variables, including the environment variables of the host operating system
- You can get a list of the predefined variables by calling
phpinfo()
in a script
Primitive Types
- There are eight primitive types:
- Four scalar types:
boolean
,integer
,double
, andstring
- Two compound types:
array
andobject
- Two special types:
resource
andNULL
- Integer and double are like those of other languages
Strings
- Characters are single bytes
- String literals are single or double quoted
- Single-quoted string literals
- Embedded variables are not interpolated
- Embedded escape sequences are not recognized
- Double-quoted string literals
- Embedded variables are interpolated
- If there is a variable name in a double-quoted string but you don't want it interpolated, it must be escaped.
- Embedded escape sequences are recognized
- For both single- and double-quoted literal strings, embedded delimiters must be escaped
<note>
Characters are single bytes: This means that, unlike HTML, PHP does not natively support Unicode characters. There are a pair of functions utf8_encode()
and utf8_decode()
which provide some Unicode support. There are implications of this if you want to develop PHP applications accessible in countries which do not use the utf-8 character set.
</note>
Booleans
- values are
true
andfalse
(case insensitive) 0
and“”
and“0”
arefalse
; other values aretrue
Arithmetic Operators and Expressions
- Usual C-based language operators
- If the result of integer division is not an integer, a double is returned
- Any integer operation that results in overflow produces a double
- The modulus operator coerces its operands to integer, if necessary
- When a double is rounded to an integer, the rounding is always towards zero
- Arithmetic functions
floor
,ceil
,round
,abs
,min
,max
,rand
, etc.
String Operations and Functions
- The only operator is period
.
, for concatenation - Indexing –
$str[3]
is the fourth character - Functions:
strlen
,strcmp
,strpos
,substr
, as in Cchop
– remove whitespace from the right endtrim
– remove whitespace from both endsltrim
– remove whitespace from the left endstrtolower
,strtoupper
– convert case of string
Scalar Type Conversions
- String to numeric
- If the string contains a period, an
e
or anE
, it is converted to double; otherwise to integer - If the string does not begin with a sign or a digit, zero is used
- Explicit conversions – casts
- e.g.,
(int)$total
orintval($total)
orsettype($total, “integer”)
- The type of a variable can be determined with
gettype
oris_type
:
gettype($total) // may return "unknown" is_integer($total) // a predicate function
Output
- Output from a PHP script is HTML that is sent to the browser
- HTML is sent to the browser through standard output
- There are three ways to produce output:
echo
,print
, andprintf
echo
andprint
take a string, but will coerce other values to strings:
echo "whatever"; # Only one parameter echo("first <br />", $sum) # More than one print "Welcome to my site!"; # Only one
More Output
echo
has a shorthand<?= ?>
that makes it pleasanter to print the value of a PHP variable in copy mode:
<p>Hello <?=$name?>, welcome to my site. It's <?=date("D M j Y")?> today.</p>
- This shorthand should only be used for printing variables or with functions that return a string.
- The short syntax only works with the short_open_tag configuration setting enabled (which it is in Ubuntu).
Hello World (PHP)
- PHP code is placed in the body of an HTML document
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title> Trivial php example </title> </head> <body> <?php print "Welcome to my Web site!"; ?> </body> </html>
First PHP Example
A simple example to illustrate a PHP document: today.php (today.php @ localhost)
<!DOCTYPE html> <!-- today.php - A simple example to illustrate a PHP document --> <html lang="en"> <head> <meta charset="utf-8" /> <title> today.php – A simple example to illustrate a PHP document </title> </head> <body> <p> <?php print "<b>Welcome to my home page <br /> <br />"; print "Today is:</b> "; print date("l, F jS"); print "<br />"; ?> </p> </body> </html>
Result:
Control Expressions
- Relational operators – same as JavaScript, (including
===
and!==
) - Boolean operators – two sets,
&&
andand
,||
andor
.
Selection statements
if
,if-else
,elseif
switch
– as in C- The
switch
expression type must be integer, double, or string
Looping constructs
while
– just like Cdo-while
– just like Cfor
– just like Cforeach
– discussed later
Other statements
break
– in anyfor
,foreach
,while
,do-while
, orswitch
continue
– in any loop
Alternative componund delimiters
- “syntax sugar” – improves readability:
if (...) : ... endif;
Another Example
An example to illustrate loops and arithmetic: powers.php (powers.php @ localhost)
- Code:
<!DOCTYPE html> <!-- powers.php An example to illustrate loops and arithmetic --> <html lang="en"> <head> <meta charset="utf-8"> <title> powers.php &ndash An example to illustrate loops and arithmetic </title> </head> <body> <table border = "border"> <caption> Powers table </caption> <tr> <th> Number </th> <th> Square Root </th> <th> Square </th> <th> Cube </th> <th> Quad </th> </tr> <?php for ($number = 10; $number <=20; $number++) { $root = sqrt($number); $square = pow($number, 2); $cube = pow($number, 3); $quad = pow($number, 4); print("<tr align = 'center'> <td> $number </td>"); print("<td> $root </td> <td> $square </td>"); print("<td> $cube </td> <td> $quad </td> </tr>"); } ?> </table> </body> </html>
- Result
Intermingling HTML and PHP
- HTML can be intermingled with PHP script
<?php $a = 7; $b = 7; if ($a == $b) { $a = 3 * $a; ?> <br /> At this point, $a and $b are equal <br /> So, we change $a to three times $a <?php } ?>
<note warning> this is not necessarily a good idea! Notice how the end brace for the conditional is separated from the loop body by several unrelated HTML tags. This produces fragile code – if the second set of PHP tags where removed, a syntax error would occur which might be difficult to track down. </note>
Summary of This Lecture
Introduction to PHP with examples
Learning Outcomes
At the end of this lecture you should be able to answer these questions:
- How Does a Web server determine whether a requested document includes PHP code
- What are the two modes of the PHP processor?
- What are the syntax and semantics of the include construct?
- Which parts of PHP are case sensitive and which are not?
- What are the four scalar types of PHP?
Learning Outcomes (continued)
At the end of this lecture you should be able to answer these questions:
- How can a variable be tested to determine whether it is bound
- How can you specify to the PHP processor that you want uses of unbound variables to be reported
- How many bytes are used to store a character in PHP?
- What are the differences between single- and double-quoted literal strings
Learning Outcomes (continued)
At the end of this lecture you should be able to answer these questions:
- If an integer expression appears in Boolean context, how is its Boolean value determined?
- What happens when an integer arithmetic operation results in a value that cannot be represented as an integer?
- If a variable stores a string, how can the character at a specific position in that string be referenced?
- What does the
chop
function do? - What is a coercion?
Learning Outcomes (continued)
At the end of this lecture you should be able to answer these questions:
- What are the three ways the value of a variable can be explicitly coerced to a specific type
- How can the type of a variable be determined?
- If a string is compared with a number, what happens?
- What is the advantage of using the unique closing reserved words such as
endwhile
?
What's Next?
Introduction to PHP (Part 2)
Further features of the PHP language