Functions
Lesson Outlines
1 Define function and How do function
2 Function arguments and Working with References
1/25
Faculty of Information Science
Define function and How do function
Lesson Objectives
1 To use functions in PHP environment and their usage
2 To create a function
3 To call a function using function name
2/25
Faculty of Information Science
Define function and How do function
What Is a Function?
PHP functions are similar to other programming languages. A function is a
piece of code which takes one more input in the form of parameter and
does some processing and returns a value.
Function —is a self contained block of code that performs a specific task.
3/25
Faculty of Information Science
WHAT IS A FUNCTION?
• A FUNCTION ALSO CALLED A SUBROUTINE IN SOME OTHER
LANGUAGES AND IT CONTAINS BLOCK OF CODE THAT PERFORMS A
SPECIFIC TASK.
• A FUNCTION OFTEN ACCEPTS ONE OR MORE ARGUMENTS, WHICH ARE
VALUES PASSED TO THE FUNCTION BY THE CODE THAT CALLS IT.
• A FUNCTION MAY ALSO OPTIONALLY RETURN A VALUE THAT CAN THEN
BE READ BY THE CALLING CODE.
EXAMPLE
• FUNCTIONNAME( ARGUMENT1, ARGUMENT2 );
• $RETURNVAL = FUNCTIONNAME( ARGUMENT );
• PRINT( FUNCTIONNAME( ARGUMENT ) );
4/25
Faculty of Information Science
Define function and How do function
Why Functions Are Useful
Functions are an important part of any programming language, and
creating functions in PHP all the time.
They avoid duplicating code
They make it easier to eliminate errors
Functions can be reused in other scripts
Functions help you break down a big project
5/25
Faculty of Information Science
Define function and How do function
How do function
Creating a PHP Function
Calling a PHP Function
Create your own PHP function/Writing Your Own Functions
• should start with keyword function()
• should be put inside {} braces
6/25
Faculty of Information Science
Define function and How do function
How do function
Creating your own PHP function/Writing Your Own Functions (Cont’d)
function myFunc() { function hello() {
// (do stuff here) echo “Hello, world! < br/ > ”;
} }
// Displays “Hello, world!”
hello();
7/25
Faculty of Information Science
Define function and How do function
How do function
Calling a PHP Function
creates a function called readBook() and then calls it just after creating it.
<?php
function readBook() {
echo “Hello everybody!";
}
readBook();
8/25
?>
Faculty of Information Science
Define function and How do function
How do function
Working With Variable Functions
Variable functions allow you to use a variable like a function.
see for the function whose name is the same as the value of the variable and
execute it.
Example:
$f = 'strlen'; $squareRoot = “sqrt”;
echo $f('Hello'); //5 echo “The square root of 9 is: “ . $squareRoot( 9 ) . “. < br/ > ”;
echo “All done! < br/ > ”;
9/25
Faculty of Information Science
Define function and How do function
$squareRoot = “sqrt”;
echo “The square root of 9 is: “ . $squareRoot( 9 ) . “. < br/ > ”;
echo “All done! < br/ > ”;
The first line of code stores the function name, “ sqrt ” , as a string in the $squareRoot
variable. This variable is then used in place of ________ on the second line.
(a) function name (b) variable name
(a) function name
10/25
Faculty of Information Science
WRITING YOUR OWN FUNCTIONS
< !DOCTYPE HTML PUBLIC “-//W3C//DTD XHTML 1.0 STRICT//EN”
“HTTP://WWW.W3.ORG/TR/XHTML1/DTD/XHTML1-STRICT.DTD” >
< HTML XMLNS=”HTTP://WWW.W3.ORG/1999/XHTML” XML:LANG=”EN” LANG=”EN” >
< HEAD >
< TITLE > SAYING HELLO WITH STYLE < /TITLE >
< LINK REL=”STYLESHEET” TYPE=”TEXT/CSS” HREF=”COMMON.CSS” / >
< /HEAD >
< BODY >
< H1 > SAYING HELLO WITH STYLE < /H1 >
< ?PHP
FUNCTION HELLOWITHSTYLE( $FONT, $SIZE ) {
ECHO “ < P STYLE=\”FONT-FAMILY: $FONT; FONT-SIZE: {$SIZE}EM;\” > HELLO, WORLD! < /P > ”;
HELLOWITHSTYLE( “HELVETICA”, 2 );
HELLOWITHSTYLE( “TIMES”, 3 );
HELLOWITHSTYLE( “COURIER”, 1.5 );
? > < /BODY >< /HTML >
11/25
Faculty of Information Science
OPTIONAL PARAMETERS AND DEFAULT VALUES
< !DOCTYPE HTML PUBLIC “-//W3C//DTD XHTML 1.0 STRICT//EN”
“HTTP://WWW.W3.ORG/TR/XHTML1/DTD/XHTML1-STRICT.DTD” >
< HTML XMLNS=”HTTP://WWW.W3.ORG/1999/XHTML” XML:LANG=”EN” LANG=”EN” >
< HEAD >
< TITLE > SAYING HELLO WITH STYLE < /TITLE >
< LINK REL=”STYLESHEET” TYPE=”TEXT/CSS” HREF=”COMMON.CSS” / >
< /HEAD >
< BODY >
< H1 > SAYING HELLO WITH STYLE < /H1 >
< ?PHP
FUNCTION HELLOWITHSTYLE( $FONT, $SIZE=1.5 ) {
ECHO “ < P STYLE=\”FONT-FAMILY: $FONT; FONT-SIZE: {$SIZE}EM;\” > HELLO, WORLD! < /P > ”;
HELLOWITHSTYLE( “HELVETICA”, 2 );
HELLOWITHSTYLE( “TIMES”, 3 );
HELLOWITHSTYLE( “COURIER” );
? > < /BODY >< /HTML >
12/25
Faculty of Information Science
RETURNING VALUES FROM YOUR FUNCTIONS
< !DOCTYPE HTML PUBLIC “-//W3C//DTD XHTML 1.0 STRICT//EN”
“HTTP://WWW.W3.ORG/TR/XHTML1/DTD/XHTML1-STRICT.DTD” >
< HTML XMLNS=”HTTP://WWW.W3.ORG/1999/XHTML” XML:LANG=”EN” LANG=”EN” >
< HEAD >
< TITLE > NORMAL AND BOLD TEXT < /TITLE >
< LINK REL=”STYLESHEET” TYPE=”TEXT/CSS” HREF=”COMMON.CSS” / >
< /HEAD >
< BODY >
< H1 > NORMAL AND BOLD TEXT < /H1 >
< ?PHP
FUNCTION MAKEBOLD( $TEXT ) {
RETURN “ < B > $TEXT < /B > ”;
$NORMALTEXT = “THIS IS NORMAL TEXT.”;
$BOLDTEXT = MAKEBOLD( “THIS IS BOLD TEXT.” );
ECHO “ < P > $NORMALTEXT < /P > ”;
ECHO “ < P > $BOLDTEXT < /P > ”;
? >< /BODY > < /HTML >
13/25
Faculty of Information Science
HERE DOCUMENT (HEREDOC)
• CAN USE HERE DOCUMENT OR HEREDOC TO ESCAPE PHP CODE
DIRECTLY.
• START YOUR HERE DOCUMENT WITH “<<<“ FOLLOWED BY A
WORD (SUCH AS HERE).
• YOU MUST END YOUR HERE DOCUMENT BY A LINE THAT
IMMEDIATELY BEGINS WITH THE WORD THAT YOU STARTED THE
HERE DOCUMENT.
14/25
Faculty of Information Science
<HTML><BODY>
<H1>SORTING WORDS IN A BLOCK OF TEXT BY
LENGTH</H1>
<?PHP
$MYTEXT = <<<END_TEXT
BUT THINK NOT THAT THIS FAMOUS TOWN HAS
ONLY HARPOONEERS, CANNIBALS, AND
BUMPKINS TO SHOW HER VISITORS. NOT AT ALL.
STILL NEW BEDFORD IS A QUEER PLACE. HAD IT
NOT BEEN FOR US WHALEMEN, THAT TRACT OF
LAND WOULD THIS DAY PERHAPS HAVE BEEN IN
AS HOWLING CONDITION AS THECOAST OF
LABRADOR.
END_TEXT;
ECHO “<H2>THE TEXT:</H2>”;
?>
</BODY> </HTML>
15/25
Faculty of Information Science
WORKING WITH REFERENCES
• LEARNED YOU CAN PASS INFORMATION TO A FUNCTION IN THE
FORM OF ARGUMENTS, AS WELL AS
• RETURN INFORMATION FROM A FUNCTION TO ITS CALLING CODE
USING THE RETURN STATEMENT
• PHP ACTUALLY PASSES COPIES OF THE INFORMATION TO AND
FROM THE FUNCTION; THIS IS KNOWN AS
• PASSING AND RETURNING BY VALUE .
16/25
Faculty of Information Science
WORKING WITH VALUES
• FUNCTION RESETCOUNTER( $C ) {
• $C = 0;
• }
• $COUNTER = 0;
• $COUNTER++;
• $COUNTER++;
• $COUNTER++;
• ECHO “$COUNTER < BR/ > ”; // DISPLAYS “3”
• RESETCOUNTER( $COUNTER );
• ECHO “$COUNTER < BR/ > ”; // DISPLAYS “3”
17/25
Faculty of Information Science
PASSING REFERENCES TO YOUR OWN FUNCTIONS
FUNCTION RESETCOUNTER( &$C ) {
$C = 0;
$COUNTER = 0;
$COUNTER++;
$COUNTER++;
$COUNTER++;
ECHO “$COUNTER < BR/ > ”; // DISPLAYS “3”
RESETCOUNTER( $COUNTER );
ECHO “$COUNTER < BR/ > ”; // DISPLAYS “0”
18/25
Faculty of Information Science
RETURNING REFERENCES FROM YOUR OWN FUNCTIONS
$MYNUMBER = 5;
FUNCTION & GETMYNUMBER() {
GLOBAL $MYNUMBER;
RETURN $MYNUMBER;
$NUMBERREF = &GETMYNUMBER();
$NUMBERREF++;
ECHO “\$MYNUMBER = $MYNUMBER < BR/ > ”; // DISPLAYS “6”
ECHO “\$NUMBERREF = $NUMBERREF < BR/ > ”; // DISPLAYS “6”
19/25
Faculty of Information Science
CREATING THE FIBONACCI SEQUENCE WITH
RECURSION
<!DOCTYPE HTML PUBLIC “-//W3C//DTD XHTML 1.0 STRICT//EN”
“HTTP://WWW.W3.ORG/TR/XHTML1/DTD/XHTML1-STRICT.DTD”>
<HTML XMLNS=”HTTP://WWW.W3.ORG/1999/XHTML” XML:LANG=”EN” LANG=”EN”>
<HEAD>
<TITLE>FIBONACCI SEQUENCE USING RECURSION</TITLE>
<LINK REL=”STYLESHEET” TYPE=”TEXT/CSS” HREF=”COMMON.CSS” />
<STYLE TYPE=”TEXT/CSS”>
TH { TEXT-ALIGN: LEFT; BACKGROUND-COLOR: #999; }
TH, TD { PADDING: 0.4EM; }
TR.ALT TD { BACKGROUND: #DDD; }
</STYLE>
</HEAD>
Faculty of Information Science 20
<BODY>
20/25
<H2>FIBONACCI SEQUENCE USING RECURSION</H2>
Faculty of Information Science
CREATING THE FIBONACCI SEQUENCE WITH RECURSION
(CONT’D)
<?PHP
$ITERATIONS = 10;
FUNCTION FIBONACCI( $N ) {
IF ( ( $N == 0 ) || ( $N == 1 ) ) RETURN $N;
RETURN FIBONACCI( $N-2 ) + FIBONACCI( $N-1 );
FOR ( $I=0; $I <= $ITERATIONS; $I++ )
?>
<TR<?PHP IF ( $I % 2 != 0 ) ECHO ‘ CLASS=”ALT”’ ?>>
<TD>F<SUB><?PHP ECHO $I?></SUB></TD>
<TD><?PHP ECHO FIBONACCI( $I )?></TD>
</TR>
<?PHP
?></TABLE></BODY></HTML>
21/25
Faculty of Information Science
WORKING WITH GLOBAL VARIABLES
FUNCTION SETUP() {
GLOBAL $MYGLOBAL;
$MYGLOBAL = “HELLO THERE!”;
}
FUNCTION HELLO() {
GLOBAL $MYGLOBAL;
ECHO “$MYGLOBAL < BR/ > ”;
SETUP();
HELLO(); // DISPLAYS “HELLO THERE!”
Faculty of Information Science 22
22/25
Faculty of Information Science
USING STATIC VARIABLES TO PRESERVE VALUES
STATIC $VAR = 0;
FUNCTION NEXTNUMBER() {
RETURN ++$COUNTER;
ECHO “I’VE COUNTED TO: “ . NEXTNUMBER() . “ < BR/ > ”;
ECHO “I’VE COUNTED TO: “ . NEXTNUMBER() . “ < BR/ > ”;
ECHO “I’VE COUNTED TO: “ . NEXTNUMBER() . “ < BR/ > ”;
THE CODE DISPLAYS:
I’VE COUNTED TO: 1
I’VE COUNTED TO: 2
I’VE COUNTED TO: 3
23/25
Faculty of Information Science
EXERCISES
1. WRITE A FUNCTION THAT TAKES AN ARRAY ARGUMENT, AND RETURNS A STRING
CONTAINING XHTML MARKUP FOR A DEFINITION LIST WHERE EACH KEY OF THE
ARRAY IS A TERM, AND EACH CORRESPONDING VALUE IS A DEFINITION.
(HINT: AN XHTML DEFINITION LIST ELEMENT CONSISTS OF < DL > ... < /DL >
TAGS. INSIDE THESE TAGS, TERMS ARE MARKED UP USING < DT > ... < /DT >
TAGS, AND DEFINITIONS USING < DD > ... < /DD > TAGS.)
2. A FACTORIAL OF ANY GIVEN INTEGER, N, IS THE PRODUCT OF ALL POSITIVE
INTEGERS BETWEEN 1 AND NINE INCLUSIVE. SO THE FACTORIAL OF 4 IS 1 × 2 × 3
× 4 = 24, AND THE FACTORIAL OF 5 IS 1 × 2 × 3 × 4 × 5 = 120. THIS CAN BE
EXPRESSED RECURSIVELY AS FOLLOWS:
❑ IF N== 0, RETURN 1. (THIS IS THE BASE CASE)
❑ IF N> 0, COMPUTE THE FACTORIAL OF N– 1, MULTIPLY IT BY N, AND RETURN
THE RESULT
WRITE A PHP SCRIPT THAT USES A RECURSIVE FUNCTION TO DISPLAY THE
FACTORIALS OF THE INTEGERS 0 TO 10.
24/25
Faculty of Information Science
ASSIGNMENT
CREATE A PHP PAGE (CHAPTER 6 ASSIGNMENT2.PHP) THAT HAS A
FUNCTION TO DISPLAY THE CONTENT OF GIVEN ARRAY THAT CONTAINS
LINUX TREE DIRECTORY STRUCTURE (VARIABLE) LIKE YOU HAVE CREATED IN
EXERCISE5-3. THE FUNCTION SHOULD DISPLAY THE CONTENT BY USING
HTML <DIV> TAG WITH CSS MARGIN-LEFT LIKE SHOWN BELOW.
div { margin-left:
10mm; }
/ <div>/
etc <div>etc
apache2 <div>apache2
conf.d
<div> tags
<div>conf.d</div>
vhost.d
<div>vhost.d</div>
php5 </div>
<div>php5</div>
bin </div>
<div>bin</div>
…
</div>
25/25
Faculty of Information Science