Faculty of Sciences and Social Sciences HOPE

HOPE
Functions in PHP
Stewart Blakeway
FML 213
[email protected]
0151 291 3113
www.hope.ac.uk
Faculty of Sciences and Social Sciences
HOPE
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
www.hope.ac.uk
Faculty of Sciences and Social Sciences
What is a function?
HOPE
• 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.
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Types of function
HOPE
• 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
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Built-in Functions
How many built
in functions are
there?
echo (“Hello World!”);
HOPE
• 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.
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Arguments!
HOPE
• 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);
www.hope.ac.uk
Faculty of Sciences and Social Sciences
date ()
HOPE
• 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…
www.hope.ac.uk
Faculty of Sciences and Social Sciences
date ()
HOPE
$today = date ("l j F" );
echo $today;
• Functions that return a value do not
necessarily have to be stored.
echo (date ("l j F" ));
www.hope.ac.uk
Faculty of Sciences and Social Sciences
date ()
$today = date ("lWhat
j data
F" type
); is
$today ?
echo $today;
HOPE
How could we
find out?
$today = date ("l j F" );
echo $today;
echo (gettype($today));
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Function function function
echo (gettype(date("l j F" )));
HOPE
What do you think is echo’d ?
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Defining a function
• You can define a function by using the
function statement
HOPE
function function_name ($argument1, $argument2 …)
{
// function code goes here
}
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Defining a function
HOPE
• What is echoed out?
<?php
function bigfont($txt)
{
echo("<h1>" . $txt . "</h1>");
}
bigfont ("Hello World!");
?>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
tt function
• Examine the following code, what
does it echo out?
HOPE
function tt($num)
{
for ( $x=1 ; $x<13 ; $x++ )
{
echo ($x . “*” . $num . “=” . $x*$num
.“<br />”);
}
}
tt (6);
www.hope.ac.uk
Faculty of Sciences and Social Sciences
More about variables!
<html>
<head><title>Local Variables</title></head>
<body>
<?php
$life=42;
HOPE
function meaningOfLife ()
{
echo (“The meaning of life is”. $life);
}
meaningOfLife();
?>
</body>
</html>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
More about variables!
HOPE
<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>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Alternatively
HOPE
<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>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Question
HOPE
• 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
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Numbered Headings
HOPE
<?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>");
?>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Question
HOPE
• 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!
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Numbered Headings Alternative
<?php
HOPE
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>");
?>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
More than One Argument
HOPE
• 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
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Returning a result
HOPE
<?php
function mySum($num1, $num2)
{
$total = $num1 + $num2;
return $total;
}
$myNumber = 0;
We saw this in
$myNumber = mySum(3, 4);
slides 7 and 8
echo $myNumber;
?>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Passing Two Arguments
<?php
HOPE
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);
?>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
<?php
What do you suppose
would happen if the
function was set to
accept two arguments
and only one was
passed?
function nSFont ($txt, $size)
{
echo ("<font size=\"$size\" face=\"Helvetica,
Arial, Sans-Serif\“>$txt</font><br />");
}
Warning: Missing argument 2 for nsfont() in C:\Program
Files\Apache Group\Apache2\htdocs\test.php on line 6
nSFont
("A heading“,12);
some
body text
nSFont ("some body text");
nSFont
("some
more2 body
text");
Warning:
Missing
argument
for nsfont()
in C:\Program
Files\Apache Group\Apache2\htdocs\test.php on line 6
some
?>more body text
HOPE
A heading
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Default Arguments
<html><head><title>Local Variables</title></head><body>
<?php
HOPE
function nSFont ($txt, $size = 3)
{
echo ("<font size=\"$size\" face=\"Helvetica, Arial, SansSerif\“> $txt</font><br />");
}
nSFont ("A heading",12);
nSFont ("some body text");
nSFont ("some more body text");
?>
</body></html>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
What will be echoed out?
<html><head><title>Local Variables</title></head><body>
<?php
HOPE
function squared($num)
{
$num = ($num * $num);
echo ($num."<br />");
}
$num = 30;
squared ($num);
echo ($num."<br />");
?>
</body></html>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
What will be echoed out?
<html><head><title>Local Variables</title></head><body>
<?php
HOPE
function squared (&$num)
{
$num = ($num * $num);
echo ($num."<br />");
}
$num = 30;
squared ($num);
echo ($num."<br />");
?>
</body></html>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
What will be echoed out?
<html><head><title>Local Variables</title></head><body>
<?php
HOPE
function squared (&$joe)
{
$joe = ($joe * $joe);
echo ($joe."<br>");
}
$num = 30;
squared ($num);
echo ($num."<br>");
?>
</body></html>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Checking a function exists
HOPE
<?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");
}
?>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
What next?
• Seminar
– More exercises, specifically defining functions and
calling functions
HOPE
• Next Lecture
– This is on arrays, associate arrays,
multidimensional arrays, classes, methods.. And
more… don’t miss this as its not easy!
www.hope.ac.uk
Faculty of Sciences and Social Sciences
tt function – 3 Errors
HOPE
function tt($num)
for ( $x=1 ; $x<13 ; $x++ )
{
echo (x . “*” . $num . “=” .
$x*$num . “<br />”);
}
tt 6;
www.hope.ac.uk
Faculty of Sciences and Social Sciences
3 Errors
HOPE
<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>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
Numbered Headings – 3 Errors
<?php
HOPE
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>");
?>
www.hope.ac.uk
Faculty of Sciences and Social Sciences
HOPE
Any Questions?
www.hope.ac.uk
Faculty of Sciences and Social Sciences