Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
28 views40 pages

PHP Introduction

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1/ 40

PHP Introduction

About the PHP Language


• Syntax inspired by C
• Curly braces, semicolons, no significant whitespace
• Syntax inspired by Perl
• Dollar signs to start variable names, associative arrays
• Extends HTML to add segments of PHP within an HTML file

Wednesday, Ju 2
Example
<h1>Hello from Dr. Chuck's HTML Page</h1>
<p>
<?php
echo "Hi there.\n";
$answer = 6 * 7;
echo "The answer is $answer, what ";
echo "was the question again?\n";
?>
</p>
<p>Yes another paragraph.</p>

Wednesday, Ju 3
Example
<h1>Hello from Dr. Chuck's HTML Page</h1>
<p>
<?php
echo "Hi there.\n";
$answer = 6 * 7;
echo "The answer is $answer, what ";
echo "was the question again?\n";
?>
</p>
<p>Yes another paragraph.</p>

Wednesday, Ju 4
PHP from the Command Line

• You can run PHP from


the command line - the <?php
output simply comes echo("Hello World!");
out on the terminal. echo("\n");
• It does not have to be ?>
part of a request-
response cycle.

Wednesday, Ju 5
Keywords

abstract and array() as break case catch class clone


const continue declare default do else elseif end
declare endfor endforeach endif endswitch endwhile
extends final for foreach function global goto if
implements interface instanceof namespace new or
private protected public static switch $this throw try
use var while xor

Wednesday, Ju 6
Variable Names

• Start with a dollar sign ($) followed by a letter or


underscore, followed by any number of letters,
numbers, or underscores
• Case matters

$abc = 12; abc = 12;


$total = 0; $2php = 0;
$largest_so_far = 0; $bad-punc = 0;

http://php.net/manual/en/language.variables.basics.php
Wednesday, Ju 7
Variable Name Weirdness

• Things that look like variables but are missing a dollar


sign can be confusing.

$x = 2; $x = 2;
$y = x + 5; y = $x + 5;
print $y; print $x;

5 Parse error

Wednesday, Ju 8
Variable Name Weirdness

• Things that look like variables but are missing a dollar sign as
an array index are unpredictable....

$x = 5;
$y = array("x" => "Hello");
print $y[x];

Hello

Wednesday, Ju 9
Strings / Different + Awesome

• String literals can use single quotes or double quotes.


• The backslash (\) is used as an “escape” character.
• Strings can span multiple lines - the newline is part of
the string.
• In double-quoted strings, variable values are
expanded.
• Concatenation is the "." not "+" (more later).

Wednesday, Ju 10
<?php Double Quote
echo "this is a simple string\n";

echo "You can also have embedded newlines in 
strings this way as it is
okay to do";

// Outputs: This will expand: 
// a newline
echo "This will expand: \na newline";

// Outputs: Variables do 12
$expand = 12;
echo "Variables do $expand\n";

Wednesday, Ju 11
<?php Single Quote
echo 'this is a simple string';

echo 'You can also have embedded newlines in 
strings this way as it is
okay to do';

// Outputs: Arnold once said: "I'll be back"
echo 'Arnold once said: "I\'ll be back"';

// Outputs: This will not expand: \n a newline
echo 'This will not expand: \n a newline';

// Outputs: Variables do not $expand $either
echo 'Variables do not $expand $either';
Wednesday, Ju 12
Comments in PHP 
 echo 'This is a test'; // This is a c+
+ style comment
  /* This is a multi line comment
       yet another line of comment */
    echo 'This is yet another test';
    echo 'One Final Test'; # This is a shell-
style comment

Wednesday, Ju 13
Output

• echo is a language construct <?php


$x = "15" + 27;
- can be treated like a
function with one echo $x;
parameter. Without echo("\n");
parentheses, it accepts echo $x, "\n";
multiple parameters. print $x;
print "\n";
• print is a function - only one print($x);
parameter, but parentheses print("\n");
are optional so it can look ?>
like a language construct.

Wednesday, Ju 14
Expressions

• Completely normal like other languages ( + - / * )


• More aggressive implicit type conversion

<?php
$x = "15" + 27;
echo($x); 42
echo("\n");
?>

Wednesday, Ju 15
Expressions

• Expressions evaluate to a value. The value can be a


string, number, boolean, etc.
• Expressions often use operations and function calls.
There is an order of evaluation when there is more
than one operator in an expression.
• Expressions can also produce objects like arrays.

Wednesday, Ju 16
Increment / Decrement

• These operators allow you to both retrieve and


increment / decrement a variable.
• They are generally avoided in civilized code.

$x = 12;
$y = 15 + $x++; x is 13 and y is 27
echo "x is $x and y is $y \n";

Wednesday, Ju 17
Operators of Note
• Increment / Decrement ( ++ -- )
• String concatenation ( . )
• Equality ( == != )
• Identity ( === !== )
• Ternary ( ? : )
• Side-effect Assignment ( += -= .= etc.)
• Ignore the rarely-used bitwise operators ( >> << ^ |
&)

Wednesday, Ju 18
Increment / Decrement

• These operators allow you to both retrieve and


increment / decrement a variable.
• They are generally avoided in civilized code.

$x = 12;
$y = 15 + $x; x is 13 and y is 27
$x = $x + 1;
echo "x is $x and y is $y \n";

Wednesday, Ju 19
String Concatenation

• PHP uses the period character for concatenation,


because the plus character would instruct PHP to do
the best it could to add the two things together,
converting if necessary.

$a = 'Hello ' . 'World!'; Hello World!


echo $a . "\n";

Wednesday, Ju 20
Ternary
• The ternary operator comes from C. It allows
conditional expressions. It is like a one-line if-then-
else. Like all “contraction” syntaxes, we must use it
carefully.

$www = 123;
$msg = $www > 100 ? "Large" : "Small" ;
echo "First: $msg \n";
$msg = ( $www % 2 == 0 ) ? "Even" : "Odd";
echo "Second: $msg \n";
First: Large
$msg = ( $www % 2 ) ? "Odd" : "Even";
Second: Odd
echo "Third: $msg \n"; Third: Odd

Wednesday, Ju 21
Side-Effect Assignment

• These are pure contractions. Use them sparingly.

echo "\n";
$out = "Hello";
$out = $out . " ";
$out .= "World!";
$out .= "\n"; Hello World!
echo $out; Count: 1
$count = 0;
$count += 1;
echo "Count: $count\n";

Wednesday, Ju 22
Conversion / Casting

• As PHP evaluates expressions, sometimes values in the


expression need to be converted from one type to
another as the computations are done.

• PHP does aggressive implicit type conversion


(casting).

• You can also make type conversion (casting) explicit


with casting operators.

Wednesday, Ju 23
Casting In PHP, division forces
operands to be floating point.
PHP converts expression
$a = 56; $b = 12; values silently and
$c = $a / $b; aggressively.
echo "C: $c\n";
$d = "100" + 36.25 + TRUE;
echo "D: ". $d . "\n";
echo "D2: ". (string) $d . "\n";
C: 4.66666666667
$e = (int) 9.9 - 1;
D: 137.25
echo "E: $e\n"; D2: 137.25
$f = "sam" + 25; E: 8
echo "F: $f\n"; F: 25
$g = "sam" . 25; G: sam25
echo "G: $g\n";

Wednesday, Ju 24
PHP vs. Python
$x = "100" + 25; x = int("100") + 25
echo "X: $x\n"; print "X:", x
$y = "100" . 25; y = "100" + str(25)
echo "Y: $y\n"; print "Y:", y
$z = "sam" + 25; z = int("sam") + 25
echo "Z: $z\n"; print "Z:", z

X: 125 X: 125
Y: 10025 Y: 10025
Z: 25 Traceback:"cast.py", line 5
z = int("sam") + 25;
ValueError: invalid literal

Wednesday, Ju 25
Casting

The concatenation operator tries to


convert its operands to strings.
echo "A".FALSE."B\n"; TRUE becomes an integer 1 and then
echo "X".TRUE."Y\n"; becomes a string. FALSE is “not
there” - it is even “smaller” than zero,
at least when it comes to width.

AB
X1Y

Wednesday, Ju 26
Equality versus Identity

• The equality operator (==) in PHP is far more


aggressive than in most other languages when it
comes to data conversion during expression
evaluation.

if ( 123 == "123" ) print ("Equality 1\n");


if ( 123 == "100"+23 ) print ("Equality 2\n");
if ( FALSE == "0" ) print ("Equality 3\n");
if ( (5 < 6) == "2"-"1" ) print ("Equality 4\n");
if ( (5 < 6) === TRUE ) print ("Equality 5\n");

Wednesday, Ju 27
$vv = "Hello World!";
echo "First:" . strpos($vv, "Wo") . "\n";
echo "Second: " . strpos($vv, "He") . "\n";
echo "Third: " . strpos($vv, "ZZ") . "\n";
if (strpos($vv, "He") == FALSE ) echo "Wrong A\n";
if (strpos($vv, "ZZ") == FALSE ) echo "Right B\n";
if (strpos($vv, "He") !== FALSE ) echo "Right C\n";
if (strpos($vv, "ZZ") === FALSE ) echo "Right D\n";
print_r(FALSE); print FALSE;
echo "Where were they?\n"; First:6
Second: 0
Third:
Wrong A
Right B
Right C
Beware FALSE variables. They are detectable but not visible... Right D
Where were they?
Wednesday, Ju 28
Conditional - if
• Logical operators ( == != < > <= >= && || ! )
• Curly braces

<?php
$ans = 42;
if ( $ans == 42 ) {
print "Hello world!\n";
} else {
print "Wrong answer\n"; Hello World!
}
?>

Wednesday, Ju 29
Whitespace Does Not Matter
<?php
$ans = 42;
if ( $ans == 42 ) {
print "Hello world!\n";
} else {
print "Wrong answer\n";
}
?>
<?php $ans = 42; if ( $ans == 42 ) { print
"Hello world!\n"; } else { print "Wrong answer\n"; }
?>

Wednesday, Ju 30
Which Style do You Prefer?

<?php
$ans = 42;
<?php if ( $ans == 42 )
$ans = 42; {
if ( $ans == 42 ) { print "Hello world!\n";
print "Hello world!\n"; }
} else { else
print "Wrong answer\n"; {
} print "Wrong answer\n";
?> }
Aesthetics ?>

Wednesday, Ju 31
Multi-way x<2
yes
print 'Small'

no
$x = 7;
yes
if ( $x < 2 ) { x<10 print 'Medium'
print "Small\n";
} elseif ( $x < 10 ) { no
print "Medium\n";
} else { print 'LARGE'
print "LARGE\n";
}

print "All done\n";


print 'All Done'

Wednesday, Ju 32
Curly Braces are Not Required
if ($page == "Home") echo "You selected Home";
elseif ($page == "About") echo "You selected About";
elseif ($page == "News") echo "You selected News";
elseif ($page == "Login") echo "You selected Login";
elseif ($page == "Links") echo "You selected Links";

if ($page == "Home") { echo "You selected Home"; }


elseif ($page == "About") { echo "You selected About"; }
elseif ($page == "News") { echo "You selected News"; }
elseif ($page == "Login") { echo "You selected Login"; }
elseif ($page == "Links") { echo "You selected Links"; }

Wednesday, Ju 33
$fuel = 10;
while ($fuel > 1) {
print "Vroom vroom\n";
}

A while loop is a “zero-trip”


loop with the test at the top $fuel = 10;
before the first iteration starts. while ($fuel > 1) {
We hand construct the iteration print "Vroom vroom\n";
$fuel = $fuel - 1;
variable to implement a
}
counted loop.

Wednesday, Ju 34
$count = 1;
do {
echo "$count times 5 is " . $count * 5;
echo "\n";
} while (++$count <= 5);

A do-while loop is a “one- 1 times 5 is 5


trip” loop with the test at 2 times 5 is 10
the bottom after the first 3 times 5 is 15
iteration completes. 4 times 5 is 20
5 times 5 is 25

Wednesday, Ju 35
for($count=1; $count<=6; $count++ ) {
echo "$count times 6 is " . $count * 6;
echo "\n";
}
1 times 6 is 6
2 times 6 is 12
3 times 6 is 18
A for loop is the simplest 4 times 6 is 24
way to construct a 5 times 6 is 30
counted loop. 6 times 6 is 36

Wednesday, Ju 36
Loop runs while TRUE (top-test)
Run after each iteration.
Before loop starts

for($count=1; $count<=6; $count++ ) {


echo "$count times 6 is " . $count * 6;
echo "\n";
}
1 times 6 is 6
2 times 6 is 12
3 times 6 is 18
A for loop is the simplest 4 times 6 is 24
way to construct a 5 times 6 is 30
counted loop. 6 times 6 is 36

Wednesday, Ju 37
Breaking Out of a Loop
• The break statement ends the current loop and jumps to
the statement immediately following the loop.

• It is like a loop test that can happen anywhere in the body


of the loop.

for($count=1; $count<=600; $count++ ) {


Count: 1
if ( $count == 5 ) break; Count: 2
echo "Count: $count\n"; Count: 3
} Count: 4
echo "Done\n"; Done
Wednesday, Ju 38
Finishing an Iteration with
continue
• The continue statement ends the current iteration. jumps
to the top of the loop, and starts the next iteration.

Count: 1
for($count=1; $count<=10; $count++ ) { Count: 3
if ( ($count % 2) == 0 ) continue; Count: 5
echo "Count: $count\n"; Count: 7
} Count: 9
echo "Done\n"; Done

Wednesday, Ju 39
Summary

This is a sprint through some of the unique


language features of PHP.

Wednesday, Ju 40

You might also like