2. What is PHP?
PHP: Hypertext Preprocessor
A server-side, cross-platform HTML
embedded scripting language
What do I need?
1. PHP-enabled web server
2. Text editor
3. A way to get PHP scripts from your
machine to the server
What is it? and What do I need?
3. Basic Syntax
Escaping from HTML
1. <?php … ?>
2. <script language=“php”> … </script>
3. <? … ?>
4. <% … %>
For Example…
<?php
/* The world renowned first program.
Programmer: Todd Barber
Date: October 31, 2006
*/
echo “Hello World!”; #displays on the screen
// A simple program to illustrate just the basics
?>
4. Types
Boolean -> TRUE or FALSE
Integer – number of the set
Z = {..., -2, -1, 0, 1, 2, ...}
Float -> “decimal numbers”
String – series of characters
Single quote (‘) – doesn’t expand variables
Double quote (“) – does expand variables
Array – ordered map that assigns values
to keys
NULL – represents that a variable has no
value. NULL is the only possible value.
See http://us2.php.net/manual/en/language.types.php for all possible types and more details.
5. Variables
Variables are represented by a dollar sign
followed by the name of the variable.
The variable name is case-sensitive.
Variable names follow the same rules as
other labels in PHP. A valid variable name
starts with a letter or underscore, followed
by any number of letters, numbers, or
underscores.
$this_is_a_valid_variable
$this-one-is-not
6. More Variables
Predefined Variables
$GLOBALS – all variables currently in
the global scope
$_SERVER – all variables set by the
web server
$_POST – variables provided by the
HTTP POST
$_GET – variables provides by the
HTTP GET (in the URL)
$_SESSION – variables currently
registered with the script’s session
7. More Variables - Scope
For the most part PHP variables have a single scope
<?php
$a=1;
include ‘header_info.php’;
?>
You can reference the $a variable in the file ‘header_info.php’
<?php
$b=1;
function footer_info () {
echo $b;
}
footer_info();
?>
Nothing will output. The echo statement refers to the local scope of the variable (inside the
function.) Global variables must be declared global inside the function.
8. Global Keyword
<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
?>
What is $b?
More Variables – Scope
Passing Variables
<?php
$a = 1;
$b = 2;
function Sum ($a, $b)
{
$b = $a + $b;
}
Sum($a, $b);
echo $b;
?>
What is $b?3 2
9. More Variables - Variable
This outputs
hello world hello world
Variable names which can be set and used dynamically
<?php
$a = ‘hello’;
$$a = ‘world’;
echo “$a ${$a}”;
echo “$a $hello”;
?>
Constants - value cannot change during the execution of the script
A constant is case-sensitive by default. By convention, constant
identifiers are always uppercase.
<?php
define (“PI”,”3.14159265358979323846”);
echo PI;
?>
This outputs
3.14159265358979323846
10. Operator Precedence
Associativity Operators Additional Information
non-associative new new
left [ array()
non-associative ++ -- increment/decrement
non-associative ~ - (int) (float) (string) (array) (object) @ types
non-associative instanceof types
right ! logical
left * / % arithmetic
left + - . arithmetic and string
left << >> bitwise
non-associative < <= > >= comparison
non-associative == != === !== comparison
left & bitwise and references
left ^ bitwise
left | bitwise
left && logical
left || logical
left ? : ternary
right = += -= *= /= .= %= &= |= ^= <<= >>= assignment
left and logical
left xor logical
left or logical
left , (comma) many uses
11. Operators
Arithmetic
-$a is negation
$a + $b is addition
$a - $b is subtraction
$a * $b is multiplication
$a / $b is division (always returns float)
$a % $b is modulus
Assignment
$a = 5 is NOT “equal to.” It is “gets set to”
Combined operators
+=, -=, *=, /=, %=, .=
12. More Operators
Comparison
$a == $b is equal
$a === $b is identical (includes type)
$a != $b is not equal
$a <> $b is not equal
$a !== $b is not identical
$a < $b is less than
$a > $b is greater than
$a <= $b is less than or equal to
$a >= $b is greater than or equal to
Conditional
?: is ternary – expr1 ? expr2 : expr3
If expr1 is TRUE, the expression evaluates to expr2
If expr1 is FALSE, the expression evaluates to expr3
Shorthand for single expression if statements
13. Comparing Different Types
Operand 1 Operand 2 Result
Null or String String Convert NULL to “”, numerical or lexical
comparison
Bool or null Anything Convert to bool, FALSE<TRUE
String or
number (or
resource)
String or
number (or
resource)
Translate strings (and resources) to
numbers, usual math
Array Array Array with fewer numbers is smaller
If key from operand 1 is not found in
operand 2 then arrays are incomparable
Compare value by value
Array Anything Array is always greater
14. More Operators
Error Control
@ - suppresses any errors that may be generated
Works on expressions – if you can take a value of it then you can
use it.
Strings
Concatenation (.)
Concatenating Assignment (.=)
<$php
@include “header_info.php”; // suppress error if file doesn’t exist
$a = “Hello”; // assign value Hello to $a
$b = $a . “ World”; // $b evaluates to “Hello World”
$a .= “ World”; // $a evaluates to “Hello World”
?>
15. More Operators
Increment and Decrement
++$a – Preincrement – Increment by one, then return $a
$a++ - Postincrement – Return $a, then increment by one
--$a – Predecrement - Decrement by one, then return $a
$a-- - Postdecrement - Return $a, then decrement by one
<?php
$a = 5;
echo "Should be 5: " . $a++ . "<br />n";
echo "Should be 6: " . $a . "<br />n";
$a = 5;
echo "Should be 6: " . ++$a . "<br />n";
echo "Should be 6: " . $a . "<br />n";
$a = 5;
echo "Should be 5: " . $a-- . "<br />n";
echo "Should be 4: " . $a . "<br />n";
$a = 5;
echo "Should be 4: " . --$a . "<br />n";
echo "Should be 4: " . $a . "<br />n";
?>
16. More Operators
Logical
$a and $b is AND – TRUE if both are
TRUE
$a or $b is OR – TRUE if either is TRUE
$a xor $b is XOR – TRUE if either is
TRUE, but not both
! $a is NOT – TRUE is $a is not TRUE
$a && $b is AND – TRUE if both are
TRUE
$a || $b is OR – TRUE if either is TRUE
17. More Operators
Array
$a + $b is union – appends the right side to the
left side and doesn’t overwrite variables
$a == $b is Equal – TRUE is they have the
same key/value pairs
$a === $b is Identity – TRUE if they have the
same key/value pairs in the same order and of
the same types
$a != $b is Inequality – TRUE if $a is not equal
to $b
$a <> $b – Same as Inequality above
$a !== $b is Non-identity – TRUE if $a not
identical to $b
18. Array Comparisons
<?php
$a = array ("a" => "apple", "b" => "banana");
$b = array ("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b; // Union of $a and $b
echo "Union of $a and $b: n";
var_dump ($c);
$c = $b + $a; // Union of $b and $a
echo "Union of $b and $a: n";
var_dump ($c);
?>
<?php
$a = array ("apple", "banana");
$b = array (1 => "banana", "0" => "apple");
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>
<?php
$a = array(1,2,3);
$b = array(1,7,8,9,10);
$c = $a + $b; // Union of $a and $b
echo "Union of $a and $b: n";
//echo $c
print_r($c);
?>
19. Control Structures -- if
if – evaluates an expression to its
Boolean value – if the expression
evaluates to TRUE then the conditional
code is executed; otherwise it is ignored
<?php
$a = 5;
if ($a = 6)
echo “Hello World”;
?>
<?php
$a = 5;
if ($a == 6)
{
echo “Hello World”;
$b = 7;
}
?>
if block is executed and
displays Hello World – note the
assignment operator in the expression
if block is ignored and
nothing is done – note the
comparison operator in the expression
20. Control Structures - else
else – extension of if statement that
executes code when the if expression
evaluates to FALSE
<?php
$a=3;
$b=4;
if ($a < $b)
echo “Variable A is less than B”;
else
echo “Variable B is less than A”;
?>
21. Control Structures - elseif
elseif – another extension of if
<?php
$a=3;
$b=4;
if ($a < $b) {
echo “Variable A is less than B”;
} elseif ($a == $b) {
echo “Variable A has the same value as B”;
} else {
echo “Variable B is less than A”;
}
?>
22. Control Structures - while
while – execute the statements as
long as the expression evaluates to
TRUE
<?php
$a=3;
while ($a==4)
{
echo “The value of a is ”.$a;
}
?>
<?php
$i = 1;
while ($i <=10)
{
echo “i is set to “.$i++;
}
?>
<?php
$j = 0;
while ($j <=10)
{
echo “j is set to “.++$j;
}
?>
Counts to
10
Counts to
11
23. Control Structures – do-while
do-while – same as while except the
code chunk is guaranteed to execute
at least once
<?php
$a=3;
while ($a==4)
{
echo “The value of a is ”.$a;
}
?>
<?php
$a=3;
do
{
echo “The value of a is ”.$a;
} while ($a==4);
?>
Evaluates to FALSE and while
loop statement(s) are never
executed
while expression isn’t evaluated
until after at least one iteration
of the do-while statements. This
echoes “The value of a is 3” to
the screen.
24. for (expr1; expr2; expr3)
{ statement(s); }
expr1 is evaluated unconditionally
expr2 is evaluated at the beginning of
each iteration; continues on TRUE
expr3 is evaluated at end of iteration
<?php
for($i=1;$i<=10;$i++)
{
echo $i.”<br />”;
}
?>
Control Structures - for
<?php
$i=1;
while ($i<=10)
{
echo $i.”<br />”;
$i++;
}
?>
functions the
same as
25. Control Structures - switch
switch – the same as a series of if…
elseif statements
<?php
$i = 2;
switch ($i)
{
case 0:
echo $i;
break;
case 1:
echo $i;
break;
case 2:
echo $i;
break;
default:
echo $i;
break;
?>
<?php
$i=2;
if ($i==0)
echo $i;
elseif ($i==1)
echo $i;
elseif ($i==2)
echo $i;
?>
26. More switch
<?php
$i = 4;
switch ($i)
{
case 0:
case 1:
case 2:
case 3:
echo “I is less than 4”;
break;
case 4:
echo “I is equal to 4”;
break;
default:
echo “I is greater than 4”;
break;
?>
Combining cases Omitting Breaks
<?php
$i = 4;
switch ($i)
{
case 0:
case 1:
case 2:
case 3:
echo “I is less than 4”;
case 4:
echo “I is equal to 4”;
default:
echo “I is greater than 4”;
?>
27. Control Structures – require and include
require – includes and evaluates a
specific file; failure results in a Fatal
Error
<?php
require ‘header.php’;
?>
include - includes and evaluates a
specific file; failure results in a
Warning
<?php
include ‘header.php’;
?>
28. Control Structures –
require_once and include_once
require_once – same as require except if
the file has already been included, it will
not be included again
<?php
require_once ‘header.php’;
?>
include_once - same as include except if
the file has already been included, it will
not be included again
<?php
include_once ‘header.php’;
?>
Use when the same file might be included and
evaluated more than once during a particular
execution of a script, and you want to be sure that
it is included exactly once to avoid problems with
function redefinitions, variable value
reassignments, etc.
29. User-defined functions
Any valid PHP code can appear inside a
function
Names follow the same rules as other
labels in PHP
All functions in PHP have the global scope
<?php
function my_first_function ($arg1, $arg2, … ,$arg_n) //arguments aren’t mandatory
{
echo “PHP code goes here.”;
return $return_value; //only used when something is returned
}
my_first_function(); // example of function call with no arguments
my_first_function(1,2); // function with static arguments
my_first_function($variable); // function with a variable as an argument
}
30. Functions and Arguments
Information can be passed to the
function by the argument list, a
comma separated value list of
expressions
Arguments may be passed by:
Value (default)
Reference
Default argument list
Variable-length argument lists are
supported only in PHP4 and greater
31. Passing by value examples
<?php
######### NUMBERS ###########
function add_numbers($value1, $value2)
{
echo “The numbers $value1 + $value2 equal “. $value1+$value2;
}
add_numbers(3,4); #adding 2 static numbers
add_numbers($age1,$age2); #adding 2 ages given by a user from a form
######### STRING ###########
function display_instructions()
{
echo “Text goes here. Great for text that changes often and is used many places.”;
}
display_instructions();
######### ARRAYS ###########
function add_array_values($func_array)
{
echo “The numbers $func_array[0] + $func_array[1] = “. $func_array[0] + $func_array[1];
}
$main_program_array = array(2,3);
add_array_values($array);
?>
Function Examples
32. More Function Examples
Passing by Reference and Default Argument List
<?php
$dbc = OCILogon("A201","$password","$database");
function which_name($identifier,&$conn,$count="1")
{
//global $dbc;
//$conn =& $GLOBALS['dbc'];
if ($identifier == "last")
$sql = "select t100_first_name, t100_last_name from a201t100 where t100_last_name like 'Q%'";
else
$sql = "select t100_first_name, t100_last_name from a201t100 where t100_first_name like 'Q%'";
$stmt = OCIParse($conn,$sql);
OCIExecute($stmt);
while ($row=OCI_fetch_row($stmt)) {
echo "<tr><td>".$count++."</td><td>$row[0] $row[1]</td></tr>";}
OCIFreeStatement($stmt);
OCILogoff($conn);
}
echo "<table border='1' cellpadding='3’ width='30%'><tr><td>Count</td><td>Name</td></tr>n“;
which_name("first",$dbc);
echo"</table>";
?>
33. More Function Examples
Passing by reference notes
Used when you want to change the value of the
object you passed in
I don’t know of a realistic use except when
using classes. Can be used to return more than
one value from a function (more on that later).
Passing by default argument list
Any defaults must be on the right side of the
argument list
Must be a constant expression
Uses default unless specified otherwise
34. Variable length argument lists
Uses the func_num_args(), func_get_arg(), and
func_get_args() functions.
<?php
function math()
{
$numargs = func_num_args();
echo "Number of arguments: $numargsn<br />";
echo "The second side is: " . func_get_arg(1) . "<br />n";
$arg_list = func_get_args();
for ($i = 1; $i < $numargs +1; $i++) {
echo "Side $i is: " . $arg_list[$i -1] . "<br />n";
$area += $arg_list[$i -1];
}
return $area;
}
$area_of_object = math(3,4,5,6,1); // Prints 'Number of arguments: 5'
echo "The area of the object is $area_of_object";
?>
35. Returning values
A value can be returned by using the
optional return() statement
Function execution is ended
immediately and control passed back
to the line that called the function
Returns a single variable
could be a single number or string
could be an array with several values
36. return() examples
Single number
<?php
function square($num)
{
return $num * $num;
}
echo square(5); //displays 25
?>
Single String
<?php
function display($string1, $string2=“World”)
{
return $string1 . $string2;
}
echo display(“Hello”,” Todd”);// displays Hello Todd
echo display(“Hello ”);//displays Hello World
?>
37. More return() examples
Array – use the built-in list() function
to access the array elements
<?php
function math($num1, $num2)
{
$div = $num1 / $num2;
$mutli = $num1 * $num2;
$add = $num1 + $num2;
$sub = $num1 - $num2;
return array($div, $mutli, $add, $sub);
}
list ($d, $m, $a, $s) = math("6","2");
echo "Division: $d";
echo "<br />Multiplication:". $m;
echo "<br />Addition: $a";
echo "<br />Subtraction: $s";
?>
38. More return() examples
Passing by reference to return multiple values
<?php
function split_string($input, $cut_point, &$first, &$second)
{
if(strlen($input) < $cut_point)
return false;
$first = substr($input, 0, $cut_point);
$second = substr($input, $cut_point);
return true;
}
$input_text = "abcdefghijklmnopqrstuvwxyz";
if(split_string($input_text, 30, $first_half, $second_half) != true)
{
echo "Could not split input, cut-point is entire string!<br />";
}
if(split_string($input_text, 15, $first_half, $second_half) == true)
{
echo "First segment of input: $first_half<BR>";
echo "Second segment of input: $second_half<BR>";
}
?>
39. Oh, by the way…
You can also return by reference. See
http://www.php.net/manual/en/language.references.return.php for a
simple example and some explanation
Remember variable variables? (Slide 9) PHP also allows for
variable functions
<?php
function display()
{
echo “In a function…”;
}
$variable_function = “display”;
$variable_function();
?>
Built in Functions - http://www.php.net/manual/en/funcref.php
Sessions - http://www.php.net/manual/en/ref.session.php
Oracle - http://www.php.net/manual/en/ref.oci8.php
Strings - http://www.php.net/manual/en/ref.strings.php
Date & Time - http://www.php.net/manual/en/ref.datetime.php
Arrays - http://www.php.net/manual/en/ref.array.php
File System - http://www.php.net/manual/en/ref.filesystem.php
PDF - http://www.php.net/manual/en/ref.filesystem.php
Notes de l'éditeur
Since everything is HTML embedded, must have a way of telling the server what is PHP and what is HTML. 1 and 2 are both always available, however number 1 is used most often. 3 and 4 are only available if enabled by the server administrator. Closing tag is optional. Lines of code must end in PHP.
Don’t add scope until talking about functions b/c examples don’t make sense until then.
Don’t add scope until talking about functions b/c examples don’t make sense until then.
Form with 8 names and name1, name2, etc… and it gets submitted For loop 8 times: $temp_name = name$i echo $$temp_name // holds the actual value from the form. End of for
String to number- if string starts with number or sign then it gets that value, if it starts with anything else it gets evaluated to zero.
Two different variations of AND and OR because they have different precedence
Point out that on single command if statements the curly braces are optional.
for ($i=1;$i<=10;print $i++) More on for the expressions can be blank or have multiple expressions in them. Go to php.net for more