Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low...
Transcript of Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low...
![Page 1: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/1.jpg)
Introduction to PHP
1
![Page 2: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/2.jpg)
Introduction to PHP
In the beginning
“Personal Home Page” - Perl
PHP/FI - written in C, • v1 - released 1995
• v2 - released 1997
PHP3 - “PHP: Hypertext Processor”• Rewritten Parser, launched 1998
PHP4• Introduces basic OOP, May 2000
2
2
![Page 3: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/3.jpg)
Introduction to PHP
PHP today
3
5.0 • Public/private/protected class methods & properties
• Exceptions5.1 • PDO: common database interface
5.2 • DateTime classes
5.3 • Namespaces
• Lambda/Anonymous functions
5.4 • Traits
• Short array syntax [ ]
5.5 • Generators
• Native password hashing
3
![Page 4: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/4.jpg)
Introduction to PHP
PHP’s StrengthsEasy (and cheap) to deploy• Low barrier to entry
C-like syntax
Built for web-scripting• Makes cookies, server, request info available easily.
• Handle form input directly
Duck-typing• “If it walks, swims, quacks like a duck...”
Inline PHP inside of HTML
4
4
![Page 5: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/5.jpg)
Introduction to PHP
PHP’s weaknesses
Not designed• Inconsistent function signatures
No benevolent dictator, fragmented community
Poor & insecure early coding practices
Servers may configure it differently
Duck-typing
Inline PHP inside of HTML
5
5
![Page 6: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/6.jpg)
Introduction to PHP
Script execution
PHP interpreter works within a web server.• Files matching configure file extensions are parsed.
• Usually its “.php”
Opening and closing tags indicate code to be executed• Opening tag: “<?php”
• Closing tag: “?>” is optional if your file is all PHP
• Short echo tag “<?= $name ?>”
Can mix PHP and HTML in same file.
6
6
![Page 7: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/7.jpg)
Introduction to PHP
Anatomy of a script
<?php// Opening tags tell the php engine to compile the code // assigning some strings$title = “Example”;$message = “Hello World”; // output an HTML fragment?><h1><?= $title ?></h1><p><? echo $message ?>. Today's is <?= date('Y-m-d') ?></p>
7
7
![Page 8: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/8.jpg)
Introduction to PHP
Constants
Constants hold values that cannot be changed and can be accessed globally. By convention, they are uppercase.
<?phpdefine(“DELAY”, 60);sleep(DELAY);
8
8
![Page 9: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/9.jpg)
Introduction to PHP
Variables
Starts with a dollar sign ($)
Alpha numeric names, starts with a letter or underscore• $total
• $_max
• $first_name
• $address_2
• $is_parsed
9
9
![Page 10: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/10.jpg)
Introduction to PHP
Variables - beware
PHP populates “Super-globals” arrays. Don’t trust user input - Filter on Input / Escape on Output• $GLOBALS
• $_SERVER
• $_COOKIES
• $_SESSION
• $_POST / $_GET / $_REQUEST
• $_FILES
• Full list: http://www.php.net/manual/en/reserved.variables.php
10
10
![Page 11: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/11.jpg)
Introduction to PHP
Types - Strings
Single Quotes
$color = ‘Green’;
Double Quotes
// outputs Green Eggs and Ham$food = “$color Eggs and Ham”;echo $food;
11
11
![Page 12: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/12.jpg)
Introduction to PHP
Types - Booleans
A variable that is TRUE or FALSE• $is_parsed = FALSE;
False equivalents• The numbers 0 or 0.0
• Empty strings “” and “0”
• Empty arrays
• NULL value
12
12
![Page 13: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/13.jpg)
Introduction to PHP
Types - Numbers
Integers• Whole numbers, positive or negative
• $max = 100
• $height = -123
Floats (or doubles)• Numbers with a fractional component, positive or negative
• $book_price = 49.99
• $distance = 1.2e4
13
13
![Page 14: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/14.jpg)
Introduction to PHP
Types - Arrays
Numerically indexed, starting at 0
$zoo = array(‘Lion’, ‘Tiger’, ‘Bear’);echo $zoo[0]; // outputs Lion
Elements within an array can be any type.
$bag = [5, 3.2, array(‘one’, ‘two’), ‘Banana’];echo $bag[2][0]; // outputs 'One'
14
14
![Page 15: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/15.jpg)
Introduction to PHP
Types - Associative Arrays
Like plain arrays, but specify keys and values. Keys can be strings or integers.
// short array syntax$address = [‘city’ => ‘Fairfax’, ‘state’ => ‘VA’]; // adding a new key, value pair$address[‘country’] = ‘United States’;
15
15
![Page 16: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/16.jpg)
Introduction to PHP
Flow Control - IF/ELSE -
<?phpif ($speed == 88) {" echo “We’re going back to the future!”;} elseif ($speed > 75) { echo “Almost there, keep accelerating.”;} else if ($speed > 25) { echo “You need to go faster.”;} else { echo “Please press the accelerator”;}
16
16
![Page 17: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/17.jpg)
Introduction to PHP
Flow Control - Switch<?phpswitch (strtolower($color)) {" case "blue":" " $turtle = "Leonardo";" " break;" case "orange":" " $turtle = "Michelangelo";" " break;" case "purple":" " $turtle = "Donatello";" " break;" case "red":" " $turtle = "Raphael";" " break;" default:" " trigger_error("Unknown turtle.", E_USER_WARNING);}
17
17
![Page 18: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/18.jpg)
Introduction to PHP
For Loop
Basic loop, specify starting & ending conditions and an increment.
for ($i = 1; $i < 5; $i++) { echo $i * 2 . “\n”;}
Output:2
4
6
8
18
18
![Page 19: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/19.jpg)
Introduction to PHP
Foreach loop
Useful for traversing associative arrays and using keys & values within the loop.
$zoo = [“Lions” => 3, “Tigers” => 2, “Bears” => 5];foreach ($zoo as $animal => $count) { echo $animal . “: “ . $count;}
Output:Lions: 3
Tigers: 2
Bears: 5
19
19
![Page 20: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/20.jpg)
Introduction to PHP
While loop
Execute while a condition is TRUE.
$x = 'PHP';while (strlen($x) < 10) {" $x = $x . $x;" echo $x;}
Output:
PHPPHPPHPPHPPHPPHP
20
20
![Page 21: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/21.jpg)
Introduction to PHP
FunctionsMost basic reusable block of code.• Name follows same rules as variables.
• Can accept zero or more arguments.
• Can only return a single value.
<?phpfunction largest($a, $b) { if ($a > $b) { return $a; } return $b;}echo largest(7, "23"); // outputs 23echo largest(120.2, -15); // outputs 120.2
21
21
![Page 22: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/22.jpg)
Introduction to PHP
Objects
Objects can have properties and methods that act on those properties.
<?php$student = new StdClass;$student->name="Alex";$student->email="[email protected]";$student->graduation_year = 2010; echo $student->name . ' - ' . $student->email;
22
22
![Page 23: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/23.jpg)
Introduction to PHP
Reusing PHP scripts
Can load another PHP script in your current script. The code in the included file inherits your current variable scope.
<?php// sets $year, $author from a file in same directoryinclude(__DIR__ . “/copyright.php”);?> <p>©<?= $year; ?> <?= $author ?>
23
23
![Page 24: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/24.jpg)
Introduction to PHP
Include versus Requires
Four ways to load another script• include(“lib/foo.php”);
Loads the file, script continues if file is not found.
• include_once(“lib/foo.php”);Loads the file if it hasn’t been loaded previously, script continues if file is not found.
• require(“lib/foo.php”);Loads the file, triggers fatal error if file not found
• require_once(“lib/foo.php”);Loads the file if it hasn’t been loaded already, triggers fatal error if file not found
24
24
![Page 25: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/25.jpg)
Introduction to PHP
Worst Practices
If you learn nothing else today...• Don’t trust user input, filter input & sanitize output.
• Don’t use global scope in your functions
- http://en.eikipedia.org/wiki/Global_variable
• Don’t suppress error output with @.
• Don’t use eval statement.
• Don’t use “or die()” to handle errors.
• Don’t use ereg_*, mysql_* functions (or other deprecated functions)
25
25
![Page 26: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/26.jpg)
Introduction to PHP
Handling form input<p>Please answer a few questions.</p><form action="./survey.php" method="post"> <input type="text" name="name" placeholder="Your Name" required="required" /> <input type="email" name="email" placeholder="Your e-mail" required="required" /> <p><b>Check each animal to visit at the zoo:</b></p> <label><input type="checkbox" name="animals[]" value="lions" />Lions</label> <label><input type="checkbox" name="animals[]" value="tigers" />Tigers</label> <label><input type="checkbox" name="animals[]" value="bears" />Bears</label> <label><input type="checkbox" name="animals[]" value="zebras" />Zebras</label> <label><input type="checkbox" name="animals[]" value="monkeys" />Monkeys</label> <div><input type="submit" value="Save" /></div></form>
26
26
![Page 27: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/27.jpg)
Introduction to PHP
Handling form input<?php// sanitize incoming name and email$name = filter_var($_POST['name'], FILTER_SANITIZE_STRING);$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { trigger_error('Invalid email address', E_USER_ERROR);} // ensure animal options are valid$valid = ['lions', 'tigers', 'bears', 'zebras', 'monkeys']; // Filter by looping through the array$animals = [];foreach ($_POST['animals'] as $test) { if (in_array($test, $valid)) { array_push($animals, $test); }} // OR filter with an array_* function, keep the ones in common$animals = array_intersect($_POST['animals'], $valid); // We now have values for $name, $email, and $animals that we can use safely.// We can email them, store them in a database, and/or echo them back to the user.
27
27
![Page 28: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/28.jpg)
Introduction to PHP
Making an HTTP request<?php// get the weather based on a city name// name is supplied via query string parameter "city"$city = null;if (isset($_GET['city'])) { $city = filter_var($_GET['city'], FILTER_SANITIZE_STRING);} if (empty($city)) { trigger_error('City must be specified', E_USER_ERROR);} // build URL to query weather$params = ['q' => $city ];$url = 'http://api.openweathermap.org/data/2.5/weather'?' . http_build_query($params); // make the request and decode the response, assumes allow_url_fopen is enabledif ($result = file_get_contents($url)) { $weather = json_decode($result); var_dump($weather);}
28
28
![Page 29: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/29.jpg)
Introduction to PHP
Making an HTTP requeststdClass Object( [coord] => stdClass Object ( [lon] => -77.031997680664 [lat] => 38.890399932861 )
[sys] => stdClass Object ( [country] => United States of America [sunrise] => 1378723498 [sunset] => 1378769117 )
[weather] => Array ( [0] => stdClass Object ( [id] => 802 [main] => Clouds [description] => scattered clouds [icon] => 03d )
)
[base] => gdps stations [main] => stdClass Object ( [temp] => 295.46 [humidity] => 63
[pressure] => 1021 [temp_min] => 293.71 [temp_max] => 297.15 )
[wind] => stdClass Object ( [speed] => 1.54 [gust] => 1.54 [deg] => 360 )
[clouds] => stdClass Object ( [all] => 32 )
[dt] => 1378743982 [id] => 4140963 [name] => Washington [cod] => 200)
29
29
![Page 30: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/30.jpg)
Introduction to PHP
Output a result set<?php// $dbh is a connection to our database$sth = $dbh->prepare("SELECT name, email, room, phone, fax, photo FROM employees");$sth->execute(); // Return next row as an array indexed by column namewhile ($row = $sth->fetch(PDO::FETCH_ASSOC)) { include('card.php');}
card.php:
<dl class="staff"> <dt>Name</dt> <dd><?= $row['name'] ?></dd> <dt>E-mail</dt> <dd><?= $row['email'] ?></dd> <dt>Room</dt> <dd><?= $row['room'] ?></dd> <dt>Phone</dt> <dd><?= $row['phone'] ?></dd> <dt>Fax</dt> <dd><?= (!empty($row['fax']) ? $row['fax'] : '-' ?></dd> <dt>Photo</dt> <img src="/images/staff/<?= $row['photo'] ?>" alt="<?= $row['name'] ?>/></dl>
30
30
![Page 31: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/31.jpg)
Introduction to PHP
Where do you go from here?
Further reading• http://php.net - beware User Notes
• http://www.phptherightway.com/
• https://phpbestpractices.org/
Community• http://www.meetup.com/DC-PHP/
• http://phpmentoring.org
• http://phpwomen.org/
31
31
![Page 32: Introduction to PHP · Introduction to PHP PHP’s Strengths Easy (and cheap) to deploy • Low barrier to entry C-like syntax Built for web-scripting • Makes cookies, server, request](https://reader033.fdocuments.in/reader033/viewer/2022060419/5f16058436db63225b1e9803/html5/thumbnails/32.jpg)
Introduction to PHP
php[architect] @phparch
Web Summits - http://summits.phparch.com• Sept. 17th - What’s new in PHP5.5
Online Training - PHP, Wordpress, more...• Sign-up before Sept 15th to get an iPod Shuffle.
Monthly Electronic Magazine• 25% off a year subscription: AZ42-W1JJ-D57Z
Books too• http://phparch.com
32
32