How to Create and Use Functions

How to Create and Use Functions

1/20/2019 The syntax for a function function function_name([$param_1, $param_2, ... , Chapter 13 $param_n]) { // Code for function [return [value];] How to create } A function with no parameters that returns a value and use functions function coin_toss() { $coin = (rand_int(0, 1) == 0) ? 'heads' : 'tails'; return $coin; } © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 1 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 4 Objectives A function with one parameter function display_error($error) { Applied echo '<p class="error">' . $error . '</p>'; 1. Create any of the functions that your applications require. These } functions may need to pass arguments by value or reference, A function with three parameters provide default values for arguments, or provide for a variable function avg_of_3($x, $y, $z) { number of arguments. $avg = ($x + $y + $z) / 3; 2. Call any of the functions that your applications require. return $avg; } 3. Create and use function libraries and namespaces. Calling functions that return values $average = avg_of_3(5, 2, 8); // $average is 5 echo coin_toss(); // Displays heads or tails © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 2 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 5 Objectives (continued) A function call that doesn’t return a value Knowledge display_error('Value out of range.'); 1. Describe the creation and use of functions. A function call that discards the return value 2. Distinguish between passing an argument by value and passing an $list = array('Apples', 'Oranges', 'Grapes'); $last = array_pop($list); argument by reference. array_pop($list); // Removes Oranges 3. Describe local scope and global scope as it applies to the variables // Discards return value within functions, and describe the scope of functions themselves. 4. Describe the use of function libraries and namespaces. © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 3 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 6 1 1/20/2019 Key terms How to return multiple values function function array_analyze($array, &$sum, &$prod, &$avg) { $sum = array_sum($array); parameter $prod = array_product($array); $avg = $sum / count($array); parameter list } return statement $list = array(1, 4, 9, 16); argument array_analyze($list, $s, $p, $a); echo '<p>Sum: ' . $s . '<br /> argument list Product: ' . $p . '<br /> Average ' . $a . function call '</p>'; calling a function © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 7 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 10 An argument passed by value A variable with global scope function add_3_by_val($value) { $a = 10; // $a has global scope $value += 3; function show_a() { echo '<p>Number: ' . $value . '</p>'; echo $a; // Inside function, $a is NULL } } show_a(); // Displays nothing $number = 5; add_3_by_val($number); // Displays 8 How to access a global variable from a function echo '<p>Number: ' . $number . '</p>'; // Displays 5 $b = 10; // $b has global scope function show_b() { An argument passed by reference global $b; // $b refers global variable $b function add_3_by_ref(&$value) { echo $b; $value += 3; } echo '<p>Number: ' . $value . '</p>'; show_b(); // Displays 10 } $number = 5; add_3_by_ref($number); // Displays 8 echo '<p>Number: ' . $number . '</p>'; // Displays 8 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 8 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 11 How to modify a string that’s passed by reference Another way to access a global variable function wrap_in_tag(&$text, $tag) { $c = 10; // $c has global scope $before = '<' . $tag . '>'; function show_c() { $after = '</' . $tag . '>'; $c = $GLOBALS['c']; // $c refers to global $c $text = $before . $text . $after; echo $c; } } show_c(); // Displays 10 $message = 'Value out of range.'; wrap_in_tag($message, 'p'); A variable with local scope echo $message; // <p>Value out of range.</p> function show_d() { $d = 10; // $d has local scope within function echo $d; } echo $d; // Outside function, $d is NULL © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 9 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 12 2 1/20/2019 A function with one required Key terms and two default parameters scope function display_error($error, local scope $tag = 'p', global scope $class = 'error') { $opentag = '<' . $tag . ' class="' . $class . '">'; $closetag = '</' . $tag . '>'; echo $opentag . $error . $closetag; } © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 13 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 16 A function with one default parameter Calling a function with a default parameter value function get_rand_bool_text($type = 'coin') { Omitting optional parameters $rand = random_int(0, 1); switch ($type) { echo get_rand_bool_text(); case 'coin': echo display_error('Out of range'); $result = ($rand == 1) ? 'heads' : 'tails'; $is_leap_year = is_leap_year(); break; case 'switch': $result = ($rand == 1) ? 'on' : 'off'; Providing optional parameters break; echo get_rand_bool_text('switch'); } echo display_error('Out of range', 'li'); return $result; } $is_leap_year = is_leap_year(new DateTime('March 15, 2018')); © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 14 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 17 A function with an optional parameter The syntax for type declarations function is_leap_year($date = NULL) { For the return type if (!isset($date)) { $date = new DateTime(); function function_name(parameter_list) : return_type {} } if ($date->format('L') == '1') return true; For the parameter list else return false; (type_1 $param_1, type_2 $param_2, ... , type_n $param_n) } © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 15 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 18 3 1/20/2019 A function with one parameter type declaration Key terms function display_error(string $error) { scalar value echo '<p class="error">' . $error . '</p>'; } type declarations strict types mode A function with type declarations for its parameters and return value function avg_of_3(int $x, int $y, int $z) : float { $avg = ($x + $y + $z) / 3; return $avg; } © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 19 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 22 Functions for working with Function calls without strict typing variable-length parameter lists display_error('Value out of range.'); // Displays 'Value out of range.' func_get_args() display_error(1); // Displays '1' func_num_args() func_get_arg($i) $average = avg_of_3(5, 2, 8); // $average is 5 $average = avg_of_3(5.1, 2.7, 8.2); // $average is 5 A function that adds a list of numbers function add() { $numbers = func_get_args(); $total = 0; foreach($numbers as $number) { $total += $number; } return $total; } $sum = add(5, 10, 15); // $sum is 30 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 20 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 23 How to enable strict types mode A function that averages one or more numbers declare(strict_types=1); // must be first line of script function average($x) { // $x forces one argument $count = func_num_args(); $total = 0; Function calls with strict typing for($i = 0; $i < $count; $i++) { display_error('Value out of range.'); $total += func_get_arg($i); // Displays 'Value out of range.' } return $total / $count; display_error(1); // Fatal error } $average = avg_of_3(5, 2, 8); // $average is 5 $avg = average(75, 95, 100); // $avg is 90 $average = avg_of_3(5.1, 2.7, 8.2); // Fatal error A typical error message when the data type isn’t correct TypeError: Argument 1 passed to avg_of_3() must be of the type integer, float given © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 21 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 24 4 1/20/2019 Using required parameters A library of functions (the cart.php file) (cont.) with a variable parameter list // Get cart subtotal function array_append(&$array, $x) { function cart_get_subtotal($cart) { $values = func_get_args(); // Also contains $array $subtotal = 0; array_shift($values); // Removes $array from front foreach ($cart as $item) { foreach($values as $value) { $subtotal += $item['total']; $array[] = $value; } } $subtotal = round($subtotal, 2); } $subtotal = number_format($subtotal, 2); return $subtotal; $data = array('apples', 'oranges'); } array_append($data, 'grapes', 'pears'); ?> © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 25 © 2017, Mike Murach & Associates, Inc. Murach's PHP and MySQL (3rd Ed.) C13, Slide 28 A library of functions (the cart.php file) Code that uses the library <?php // load the library // Add an item to the cart require_once('cart.php'); function cart_add_item(&$cart, $name, $cost, $quantity) { // create an array to store the cart $total = $cost * $quantity; $cart = array(); $item = array( 'name' => $name, // call methods from

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    10 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us