PHP 1
PHP 1
PHP
Server-side scripting language useful for writing
CGI
Began as online tools by Rasmus Lerfdorf
PHP = Personal Home Page tools
Bottom-up development, has become extremely
popular today
Somewhat like C but much higher level
Especially with Apache/Linux/MySQL
Runs on both Unix and Windows platforms, with most web
servers
Used today with many commercial sites
Available for free
http://www.php.net
Documentation and many resources available online
I prefer the online documentation, easy to search (several
Simple PHP Script
Consider the following HTML file, example.html:
<html>
<head>
<title>My Page</title>
</head>
<body>
Hello world!<p>
</body>
</html>
Simple PHP Script
Here is an equivalent PHP script. PHP files have the extension
“.php” and may contain both HTML and PHP code, which is
enclosed inside <? code ?> tags, or alternately <?php
code ?>
<html>
<head>
<title>My Page</title>
</head>
<body>
<?
print(“hello world!<p>”);
?>
</body>
</html>
Simple PHP Script
More interesting version, displays the date as known by the
server:
<html>
<head>
<title>My Page</title>
</head>
<body>
<?
print(“hello world! Timestamp: “ . time() . “<p>”);
?>
</body>
</html>
PHP Time Stamp
The “.” is used to concatenate strings
The server parses the document and
interprets code within the <? ?> tags
instead of sending it directly to the client
i.e. you can write code to output the HTML
you desire
Output of previous:
$x = 1;
$y = “x”;
print(${$y});
Form Variables
If an HTML form invokes a PHP script, the
PHP script can access all of the form
variables by name
Invoking FORM:
<form method=post action=“scr.php”>
<input type=text name=“foo”
value=“bar”>
<input type=submit value=“Submit”>
</form>
Inside scr.php:
print($_REQUEST['foo']); // Outputs “bar”
Sample
<?
PHP Form
header("Content-Type: text/html");
print("<HTML><HEAD><TITLE>My Page</TITLE>");
print("</HEAD>");
print("<BODY>");
print("foo = " . $_REQUEST[‘foo’] . ", bar = " .
$_REQUEST[‘bar’] . "<P>");
print("<form method=post action=\"example.php\">");
print("<input type=text name=\"foo\" value=\"zot\">");
print("<input type=hidden name=\"bar\" value=3>");
print("<input type=submit>");
print("</form>"); Note: \” escape character
print("</BODY></HTML>"); Could also use ‘ instead
?>
Sample PHP Form
First load:
Upon submit:
Webbrowser
What the web browser receives after the first
load. Note that we see no PHP code:
<HTML>
<HEAD><TITLE>My Page</TITLE>
</HEAD>
<BODY>foo = , bar = <P>
<form method=post action="example.php">
<input type=text name="foo" value="zot">
<input type=hidden name="bar" value=3>
<input type=submit></form></BODY></HTML>
Accessing Unset
Variables
Depending upon the configuration of PHP,
you may or may not get error messages
when trying to access variables that have
not been set
Can avoid this issue using isset:
if (isset($_REQUEST[‘foo’], $_REQUEST[‘bar’]))
{
print("foo = " . $_REQUEST[‘foo’] . ", bar = " .
$_REQUEST[‘bar’] . "<P>");
}
GET and POST
Another way to hide the printing of
variables when the code is first loaded is
to detect if the program is invoked via
GET
<? or POST
header("Content-Type: text/html");
print("<HTML><HEAD><TITLE>My Page</TITLE>");
print("</HEAD>"); print("<BODY>");
if ($_SERVER['REQUEST_METHOD'] == ‘POST') {
print("foo = " . $_REQUEST[‘foo’] . ", bar = " .
$_REQUEST[‘bar’] . "<P>");
}
print("<form method=post action=\"example.php\">");
print("<input type=text name=\"foo\" value=\"zot\">");
print("<input type=hidden name=\"bar\" value=3>");
print("<input type=submit>");
print("</form>");
print("</BODY></HTML>");
?>
Operators
Same operators available as in Java:
+, -, *, /, %, ++, -- (both pre/post)
$s = "hello" . 55;
print("$s<p>"); // hello55
Arrays
Arrays in PHP are more like hash tables, i.e.
associative arrays
The key doesn’t have to be an integer
1D arrays
Use [] to access each element, starting at 0
Ex:
$arr[0] = “hello”;
$arr[1] = “there”;
$arr[2] = “zot”;
$i=0;
print(“$arr[$i] whats up!<p>”); // Outputs : hello whats up!
Arrays
Often we just want to add data to the end of
the array, we can do so by entering nothing in
the brackets:
$arr[] = “hello”;
$arr[] = “there”;
$arr[] = “zot”;
print(“$arr[2]!<p>”); // Outputs : zot!
Array Functions
See the text or reference for a list of array
functions; here are just a few:
Source: www.mcdonalds.com
Iterating through Arrays with
foreach
PHP provides an easy way to iterate over an array with the
foreach clause:
Format: foreach ($arr as $key=>$value) { … }
Previous example:
foreach($fat as $key=>$value)
{
print(“$key has $value grams of fat.<p>”);
}
Output:
big mac has 34 grams of fat.
quarter pounder has 48 grams of fat.
filet o fish has 26 grams of fat.
large fries has 26 grams of fat.
Foreach
Can use foreach on integer indices too:
$arr[]="foo";
$arr[]="bar";
$arr[]="zot";
foreach ($arr as $key=>$value)
{
print("at $key the value is $value<br>");
}
Output:
at 0 the value is foo If only want the value,
at 1 the value is bar can ignore the $key variable
at 2 the value is zot
Control Statements
In addition to foreach, we have available our
typical control statements
If
While
Break/continue
Do-while
For loop
IF statement
Format:
if (expression1)
{
// Executed if expression1 true
}
elseif (expression2)
{
// Executed if expression1 false expresson2 true
}
…
else
{
// Executed if above expressions false
}
While Loop
Format:
while (expression)
{
// executed as long as expression true
}
Do-While
Format:
do
{
// executed as long as expression true
// always executed at least once
}
while (expression);
For Loop
Format:
function foo($x,$y)
{
$z=1;
$x=$y + $z;
print($x); // Outputs 21
}
$x=10;
$y=20;
foo($x,$y);
print(“$x $y<p>”); // Outputs 10 20
Arrays: Also Pass By
Value
Arrays also are passed by value!
function foo($x)
{
$x[0]=10;
print_r($x); Array ( [0] => 10 [1] => 2 [2] => 3 )
print("<p>");
}
$x[0]=1;
$x[1]=2;
$x[2]=3;
print_r($x); Array ( [0] => 1 [1] => 2 [2] => 3 )
print("<p>");
foo($x);
print_r($x); Array ( [0] => 1 [1] => 2 [2] => 3 )
print("<p>"); Not changed!
Pass by Reference
To pass a parameter by reference, use & in
the parameter list
function foo(&$x,$y)
{
$z=1;
$x=$y + $z;
print($x); // Outputs 21
}
$x=10;
$y=20;
foo($x,$y);
print(“$x $y<p>”); // Outputs 21 20
Dynamic Functions
Functions can be invoked dynamically too,
like we can do in Scheme
Useful for passing a function as an argument
to be invoked later
function foo()
{
print("Hi<p>");
}
$x="foo";
$x(); // Outputs “Hi”
Classes & Objects
PHP supports classes and inheritance
All instance variables are public in PHP 4 (PHP 5 allows
private, protected)
Format for defining a class; the extends portion is
optional