Slide 1

Slide 1 text

unctions in PHP Part 1: Writing Your Own Functions ƒ

Slide 2

Slide 2 text

'john', 'food' => 'bacon', ); ! echo http_build_query($hash); ! // The above code would output... username=john&food=bacon

Slide 3

Slide 3 text

'john', 'food' => 'bacon', ); ! echo http_build_query($hash); ! // The above code would output... username=john&food=bacon

Slide 4

Slide 4 text

function sum($foo, $bar) { return $foo + $bar; }

Slide 5

Slide 5 text

function sum($foo, $bar) { return $foo + $bar; } echo sum(2, 2);

Slide 6

Slide 6 text

function sum($foo, $bar) { return $foo + $bar; } echo sum(2, 2); 4

Slide 7

Slide 7 text

function sum($foo, $bar) { return $foo + $bar; } echo sum(2, 2); 4 echo sum(16, 8);

Slide 8

Slide 8 text

function sum($foo, $bar) { return $foo + $bar; } echo sum(2, 2); 4 echo sum(16, 8); 24

Slide 9

Slide 9 text

Blocks of Reusable Code

Slide 10

Slide 10 text

Blocks of Reusable Code Easy to read and digest

Slide 11

Slide 11 text

Blocks of Reusable Code Easy to read and digest Easier to Maintain

Slide 12

Slide 12 text

Anatomy! of Functions

Slide 13

Slide 13 text

function announce_sum($foo, $bar) { $sum = $foo + $bar; return $sum; } Function Keyword

Slide 14

Slide 14 text

function announce_sum($foo, $bar) { $sum = $foo + $bar; return $sum; } Name

Slide 15

Slide 15 text

function announce_sum($foo, $bar) { $sum = $foo + $bar; return $sum; } Arguments

Slide 16

Slide 16 text

function announce_sum($foo, $bar) { $sum = $foo + $bar; return $sum; } Body

Slide 17

Slide 17 text

function announce_sum($foo, $bar) { $sum = $foo + $bar; return $sum; } Return

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Given

Slide 20

Slide 20 text

Given Expect

Slide 21

Slide 21 text

Given Expect Behavior

Slide 22

Slide 22 text

Given! List of all Users

Slide 23

Slide 23 text

Given! List of all Users Expect! New list of Users whose name starts with J

Slide 24

Slide 24 text

Given! List of all Users Users With J Names Expect! New list of Users whose name starts with J

Slide 25

Slide 25 text

function users_with_j_names($users) { $filtered = array(); ! // ... do some work ... return $filtered; }

Slide 26

Slide 26 text

function users_with_j_names($users) { $filtered = array(); ! // ... do some work ... return $filtered; }

Slide 27

Slide 27 text

1. Well Named Describes what the function does! not how it does it

Slide 28

Slide 28 text

function users_with_j_names($users) { $filtered = array(); ! // ... do some work ... return $filtered; }

Slide 29

Slide 29 text

foreach ($users as $user) { if (0 === strpos($user['name'], 'J')) { $filtered[] = $user; } } function users_with_j_names($users) { $filtered = array(); return $filtered; }

Slide 30

Slide 30 text

foreach ($users as $user) { if (0 === strpos($user['name'], 'J')) { $filtered[] = $user; } } function users_with_j_names($users) { $filtered = array(); return $filtered; }

Slide 31

Slide 31 text

foreach ($users as $user) { if (0 === strpos($user['name'], 'J')) { $filtered[] = $user; } } function users_with_j_names($users) { $filtered = array(); return $filtered; }

Slide 32

Slide 32 text

Users With J Names Users With K Names Users With L Names Users With M Names Users With N Names Users With O Names

Slide 33

Slide 33 text

Given! List of all Users One Letter ! Expect! New list of Users whose name starts with One Letter

Slide 34

Slide 34 text

Given! List of all Users One Letter ! Expect! New list of Users whose name starts with One Letter Users Name Begins With

Slide 35

Slide 35 text

function users_name_begins_with($users, $letter) { $filtered = array(); ! foreach ($users as $user) { if (0 === strpos($user['name'], $letter)) { $filtered[] = $user; } } return $filtered; }

Slide 36

Slide 36 text

function users_name_begins_with($users, $letter) { $filtered = array(); ! foreach ($users as $user) { if (0 === strpos($user['name'], $letter)) { $filtered[] = $user; } } return $filtered; }

Slide 37

Slide 37 text

2. Change vs Same Separate what changes! from what stays the same

Slide 38

Slide 38 text

2. Change vs Same Separate what changes! from what stays the same Arguments

Slide 39

Slide 39 text

2. Change vs Same Separate what changes! from what stays the same Behavior Arguments

Slide 40

Slide 40 text

function users_name_begins_with($users, $letter) { $filtered = array(); ! foreach ($users as $user) { if (0 === strpos($user['name'], $letter)) { $filtered[] = $user; } } return $filtered; }

Slide 41

Slide 41 text

function users_name_begins_with($users, $letter) { $filtered = array(); ! foreach ($users as $user) { if (0 === strpos($user['name'], $letter)) { $filtered[] = $user; } } return $filtered; } 1. Well Named

Slide 42

Slide 42 text

function users_name_begins_with($users, $letter) { $filtered = array(); ! foreach ($users as $user) { if (0 === strpos($user['name'], $letter)) { $filtered[] = $user; } } return $filtered; } 1. Well Named 2. Change vs Same

Slide 43

Slide 43 text

3. One Return Type Return the same value type! given any input

Slide 44

Slide 44 text

Integer! Float! Boolean! String! Array! Object 0 1 2 3! 0.0 1.0 3.14! true false! "hello" ""! array() array('john', 'eric', 'dan')! DateTime User 3. One Return Type

Slide 45

Slide 45 text

function users_name_begins_with($users, $letter) { $filtered = array(); ! foreach ($users as $user) { if (0 === strpos($user['name'], $letter)) { $filtered[] = $user; } } ! return $filtered; }

Slide 46

Slide 46 text

function users_name_begins_with($users, $letter) { $filtered = array(); ! foreach ($users as $user) { if (0 === strpos($user['name'], $letter)) { $filtered[] = $user; } } ! return $filtered; }

Slide 47

Slide 47 text

function users_name_begins_with($users, $letter) { $filtered = array(); ! foreach ($users as $user) { if (0 === strpos($user['name'], $letter)) { $filtered[] = $user; } } ! return $filtered; } 3. One Return Type

Slide 48

Slide 48 text

Variable Scope http://www.flickr.com/photos/pedrovezini/5747037907

Slide 49

Slide 49 text

Slide 50

Slide 50 text

Slide 51

Slide 51 text

Slide 52

Slide 52 text

Slide 53

Slide 53 text

Slide 54

Slide 54 text

Slide 55

Slide 55 text

Slide 56

Slide 56 text

Slide 57

Slide 57 text

$_GET! $_POST! $_SERVER! $_FILES Superglobals $_COOKIE! $_SESSION! $_REQUEST! $_ENV

Slide 58

Slide 58 text

Imagine you're @ http://domain.com/hello.php?name=john

Slide 59

Slide 59 text

Imagine you're @ http://domain.com/hello.php?name=john

Slide 60

Slide 60 text

Imagine you're @ http://domain.com/hello.php?name=john

Slide 61

Slide 61 text

4. Control In and Out Control what goes in! and what comes out

Slide 62

Slide 62 text

4. Control In and Out Control what goes in! and what comes out Arguments

Slide 63

Slide 63 text

4. Control In and Out Control what goes in! and what comes out Return Arguments

Slide 64

Slide 64 text

function users_name_begins_with($users, $letter) { $filtered = array(); ! foreach ($users as $user) { if (0 === strpos($user['name'], $letter)) { $filtered[] = $user; } } return $filtered; }

Slide 65

Slide 65 text

function users_name_begins_with($users, $letter) { $filtered = array(); ! foreach ($users as $user) { if (0 === strpos($user['name'], $letter)) { $filtered[] = $user; } } return $filtered; } 4. Control In and Out

Slide 66

Slide 66 text

function users_name_begins_with($users, $letter) { $filtered = array(); ! foreach ($users as $user) { if (0 === strpos($user['name'], $letter)) { $filtered[] = $user; } } return $filtered; } 4. Control In and Out 3. One Return Type 1. Well Named 2. Change vs Same

Slide 67

Slide 67 text

combine to make Larger Programs Small Programs

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

No content

Slide 72

Slide 72 text

No content

Slide 73

Slide 73 text

No content

Slide 74

Slide 74 text

BUILD SMALL PROGRAMS

Slide 75

Slide 75 text

unctions in PHP Part 1: Writing Your Own Functions ƒ