350 likes | 501 Views
Functions in PHP. Stewart Blakeway FML 213 blakews@hope.ac.uk 0151 291 3113. Session Aims . How to define a function How to call a function Passing and Receiving Values to/from functions Function Variables and Global Variables Giving a function storage Functions within Functions
E N D
Functions in PHP Stewart Blakeway FML 213 blakews@hope.ac.uk 0151 291 3113
Session Aims • How to define a function • How to call a function • Passing and Receiving Values to/from functions • Function Variables and Global Variables • Giving a function storage • Functions within Functions • Checking a function exists before calling it
What is a function? • A function is a self-contained block of code that can be used time and time again. • Values can be passed to functions. • Functions, once finished executing can pass values back to the calling code.
Types of function • There are two types of function. You have seen one type already and may or may not of known it was a function. • Built-in functions • Self defined functions
Built-in Functions How many built in functions are there? echo (“Hello World!”); • echo is the name of the function that you are calling. • Hello World! is a string that we are passing to the function. • Information that you want to pass to the function should be between the parentheses.
Arguments! • The terminology that explains the data that is to be passed to the function is called an argument. Some functions require more than one argument. my_function ($an_argument, $another_argument);
date () • Date () is another example of a built in function. Lets examine how this works. $today = date ("l j F" ); echo $today; • date () uses lots of symbols to represent different formats. ie: M,F,m,n,d,j,l,D,w,Y…
date () $today = date ("l j F" ); echo $today; • Functions that return a value do not necessarily have to be stored. echo(date ("l j F" ));
date () $today = date ("l j F" ); echo $today; What data type is $today ? How could we find out? $today = date ("l j F" ); echo $today; echo (gettype($today));
Function function function echo (gettype(date("l j F" ))); What do you think is echo’d ?
Defining a function • You can define a function by using the function statement function function_name ($argument1, $argument2 …) { // function code goes here }
Defining a function • What is echoed out? <?php function bigfont($txt) { echo("<h1>" . $txt . "</h1>"); } bigfont ("Hello World!"); ?>
tt function • Examine the following code, what does it echo out? function tt($num) { for ( $x=1 ; $x<13 ; $x++ ) { echo ($x . “*” . $num . “=” . $x*$num .“<br />”); } } tt (6);
More about variables! <html> <head><title>Local Variables</title></head> <body> <?php $life=42; function meaningOfLife () { echo (“The meaning of life is”. $life); } meaningOfLife(); ?> </body> </html>
More about variables! <html> <head><title>Global Variables</title></head> <body> <?php $life=42; function meaningOfLife () { global $life; echo (“The meaning of life is”. $life); } meaningOfLife(); ?> </body> </html>
Alternatively <html> <head><title>Local Variables</title></head> <body> <?php $life=42; function meaningOfLife ($arg) { echo ("The meaning of life is". $arg); } meaningOfLife($life); ?> </body> </html>
Question • Why not always pass variables to functions and do away with global variables? Sometimes you will want to remember a value of a variable even if a function has finished or manipulate a variable outside of a function
Numbered Headings <?php $numOfHeading=1; function numHeading ($heading) { global $numOfHeading; echo ("<h2>" . $numOfHeading . " . " . $heading . "</h2>" ); $numOfHeading++; } numHeading ("About Me!"); echo ("<p>Stewart Blakeway<br />0151 291 3113</p>"); numHeading ("Currently Teaching On"); echo ("<ul> <li>Computing Concepts</li> <li>Database Technology</li> <li>IT Business Applications</li> <li>Web Development</li> <li>Network & Operating Systems</li></ul>"); ?>
Question • Although the last example got the point across, Global variables should be avoided and only used as the last resort! • Why do you think this is? The beauty of functions is their versatility, take the echo function as an example. This is a function of code that can be used again and again. Global variables hinder the flexibility that functions offer!
Numbered Headings Alternative <?php function numHeading ($heading) { static $numOfHeading = 1; echo ("<h2>" . $numOfHeading . " . " . $heading . "</h2>" ); $numOfHeading++; } numHeading ("About Me!"); echo ("<p>Stewart Blakeway<br />0151 291 3113</p>"); numHeading ("Currently Teaching On"); echo ("<ul> <li>Computing Concepts</li> <li>Database Technology</li> <li>IT Business Applications</li> <li>Web Development</li> <li>Network & Operating Systems</li></ul>"); ?>
More than One Argument • So far we have seen functions that pass one argument • PHP can pass as many arguments as you define • The results of an argument can be returned
Returning a result <?php function mySum($num1, $num2) { $total = $num1 + $num2; return $total; } $myNumber = 0; $myNumber = mySum(3, 4); echo $myNumber; ?> We saw this in slides 7 and 8
Passing Two Arguments <?php function nSFont ($txt, $size) { echo ("<font size=\"$size\" face=\"Helvetica, Arial, Sans-Serif\“>$txt</font><br />"); } nSFont ("A heading",12); nSFont ("some body text",3); nSFont ("some more body text",3); ?>
What do you suppose would happen if the function was set to accept two arguments and only one was passed? <?php function nSFont ($txt, $size) { echo ("<font size=\"$size\" face=\"Helvetica, Arial, Sans-Serif\“>$txt</font><br />"); } nSFont ("A heading“,12); nSFont ("some body text"); nSFont ("some more body text"); ?> A heading Warning: Missing argument 2 for nsfont() in C:\Program Files\Apache Group\Apache2\htdocs\test.php on line 6 some body text Warning: Missing argument 2 for nsfont() in C:\Program Files\Apache Group\Apache2\htdocs\test.php on line 6 some more body text
Default Arguments <html><head><title>Local Variables</title></head><body> <?php function nSFont ($txt, $size = 3) { echo ("<font size=\"$size\" face=\"Helvetica, Arial, Sans-Serif\“> $txt</font><br />"); } nSFont ("A heading",12); nSFont ("some body text"); nSFont ("some more body text"); ?> </body></html>
What will be echoed out? <html><head><title>Local Variables</title></head><body> <?php function squared($num) { $num = ($num * $num); echo ($num."<br />"); } $num = 30; squared ($num); echo ($num."<br />"); ?> </body></html>
What will be echoed out? <html><head><title>Local Variables</title></head><body> <?php function squared (&$num) { $num = ($num * $num); echo ($num."<br />"); } $num = 30; squared ($num); echo ($num."<br />"); ?> </body></html>
What will be echoed out? <html><head><title>Local Variables</title></head><body> <?php function squared (&$joe) { $joe= ($joe * $joe); echo ($joe."<br>"); } $num = 30; squared ($num); echo ($num."<br>"); ?> </body></html>
Checking a function exists <?php function mySum($num1, $num2) { $total = $num1 + $num2; return $total; } if (function_exists (mysum)) { $myNumber = mySum(3, 4); echo $myNumber; } else { echo ("Function not available"); } ?>
What next? • Seminar • More exercises, specifically defining functions and calling functions • Next Lecture • This is on arrays, associate arrays, multidimensional arrays, classes, methods.. And more… don’t miss this as its not easy!
tt function – 3 Errors function tt($num) for ( $x=1 ; $x<13 ; $x++ ) { echo (x . “*” . $num . “=” . $x*$num . “<br />”); } tt 6;
3 Errors <html><head><title>Global Variables</title></head><body> <?php $life=42; function meaningOfLife() { Global $life; echo (“The meaning of life is” $life); } meaningOfLife(); > </body></html>
Numbered Headings – 3 Errors <?php function numHeading($heading) { fixed $numOfHeading = 1; echo ("<h2>" . $numOfHeading . " . " . $heading . "</h2>" ); $numOfHeading++; } numHeading ("About Me!"); echo ("<p>Stewart Blakeway<br />0151 291 3113</p>"); numheading ("Currently Teaching On"); echo ("<ul><li>Computing Concepts</li> <li>Database Technology</li> <li>IT Business Applications</li> <li>Web Development</li> <li>Network & Operating Systems</li>"); ?>