Enter your Sign on user name and password.

Forgot password?
Sign In | Subscribe
Start learning today, and be successful in your academic & professional career. Start Today!
Use Chrome browser to play professor video
Matthew M.

Matthew M.

Web Application Development

Slide Duration:

Table of Contents

Course Introduction

12m 13s

Intro
0:00
What Is PHP?
0:12
PHP Hypertext Preprocessor
0:13
Why Learn PHP?
1:09
Why Learn PHP?
1:10
Web Application: Educator Store
2:25
Web Application: Educator Store
2:26
Example of Web Application
3:18
PHP in the Educator Store
7:12
Dynamic Content Generation
7:22
Ease of Website Maintenance
7:55
Form Input Processing and Access to Advanced Functionality
9:00
What You Will Learn
9:36
What You Will Learn
9:37
Who Is This Course For?
10:56
Who Is This Course For?
10:57
How PHP & The Web Work

15m 32s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
Client-Server Model
0:53
Client-Server Model
0:54
HTTP Protocol
2:15
Definition of Protocol
2:16
Hypertext Transfer Protocol (HTTP)
2:37
Uniform Resource Locators
3:46
Uniform Resource Locators (URLs)
3:47
Form of URLs
4:13
Accessing Webpages with URLs
5:13
Serving Webpages
6:14
Serving Webpages, Client Machine, and Server Machine
6:15
Static vs. Dynamic Webpages
8:30
Static Webpage
8:31
Dynamic Webpage
8:55
Server-Side Scripting
9:54
Server-Side Scripting
9:55
Static and Dynamic Webpage Coding Example
11:17
Static and Dynamic Webpage Coding Example
11:18
Serving Dynamic Webpages
13:07
Serving Dynamic Webpages
13:08
Setting Up Your Development Environment

33m 11s

Intro
0:00
Lesson Overview
0:08
Lesson Overview
0:09
Development Environments
1:04
Development Environments
1:05
Our Default Development Environment: Window 7
1:54
Remote Development
4:04
Development Machine & Remote Server
4:05
Local Development
6:54
Development Machine
6:55
Software Used In This Course
9:41
Firefox Web Browser & Firebug Add-On
9:42
XAMPP
12:15
PSPAD Text Editor
13:16
XAMPP Installation
13:49
XAMPP Installation
13:50
Verify XAMPP Install
16:26
Verify XAMPP Install
16:27
localhost
19:08
localhost and 127.0.0.1 'loopback' IP Address
19:09
Document Root
21:16
Document Root and Directory Name
21:17
Document Root for Apache in XAMPP: htdocs & Example
22:13
Text Editor Spectrum
26:12
Text Editor Spectrum: Barebones to IDE
26:13
PSPad & Example
27:02
Finding Help
30:26
Web Resources
30:27
Homework Challenge
31:36
Homework Challenge
31:37
Homework Challenge (cont.)
32:38
Homework Challenge (cont.)
32:39
Your First PHP Script

12m 41s

Intro
0:00
Lesson Overview
0:19
Lesson Overview
0:20
.php To HTML
1:00
.php To HTML
1:01
PHP Delimiters
2:20
PHP Delimiters: Opening & Closing PHP Tags
2:21
'Hello, World!' Example
4:34
Echo Statement & PHP Tags
4:35
Adding Second Heading
7:34
Homework Challenge
9:56
Homework Challenge
9:57
Basic PHP Syntax

40m 24s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
PHP Delimiters
0:38
Long and Script Form
0:39
Short and ASP Style
1:33
Example
2:01
php.ini: PHP's Configuration
3:40
php.ini
3:41
Configuration Directives
3:48
Short and ASP Style: Enabled/Disabled
4:13
phpinfo()
7:58
Statements
14:28
PHP Statements
14:29
Example: PHP Statements
14:55
Comments
16:53
PHP Comments
16:55
Single-line Comments
17:37
Multi-line Comments
18:13
Example: PHP Comments
18:47
Coding Conventions
24:26
Coding Conventions
24:27
Example: PHP Coding Conventions
26:19
Homework Challenge #1
33:51
Homework Challenge #1
33:52
Homework Challenge #1 (cont.)
35:41
Homework Challenge #1 (cont.)
35:42
Homework Challenge #2
36:09
Homework Challenge #2
36:10
Homework Challenge #2 (cont.)
38:07
Homework Challenge #2 (cont.)
38:08
Variables & Numeric Data Types

16m 38s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:12
Working With Data
0:48
8 Types of Data for PHP
0:49
Identifiers
1:40
Identifiers: Definition and Example
1:41
Variables
2:47
Variables Definition
2:48
Variables Syntax
3:06
Integer Data Type
4:44
Integer Data Type
4:45
Integer Literals
5:08
Examples
5:30
Float Data Type
6:26
Float Data Type
6:27
Float Literals
7:00
Example
7:21
Example: PHP Code Declaring Variables
8:06
Example: PHP Code Declaring Variables
8:07
var_dump() Function
9:59
var_dump()
10:00
Example: Code and Output
10:30
Example: var_dump() Function
11:19
Coding Conventions: Variables
12:32
Lower Camel Case Notation
12:33
Variable Name Lengths
13:54
Homework Challenge
14:54
Homework Challenge
14:55
String Data Type

18m 6s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
String Data Type
0:29
String Data Type
0:30
Specifying String Literals
1:03
Single-Quoted Strings
1:53
Single-Quoted Strings
1:54
Escape Sequences
2:31
Escape Sequences
2:32
Example
2:46
Escape Sequences for Commonly Used Special Characters
4:32
Double-Quoted Strings
6:04
Double-Quoted Strings
6:05
Variable Interpolation
6:44
Coding Conventions: Strings
7:54
Coding Conventions: Strings
7:55
Homework Challenge
8:54
Homework Challenge
8:55
Include Files & Web Application Introduction

38m 43s

Intro
0:00
Lesson Overview
0:16
Lesson Overview
0:17
include Statement
0:47
include Statement: Definition
0:48
Include Statement: Syntax
2:05
include Statement: Example
2:25
include Path
6:32
Absolute and Relative Path
6:34
Specified Path
7:15
Not Specified Path
7:55
Code Reuse
9:35
Code Reuse
9:36
Example
11:11
require Statement
12:56
require Statement: Definition
12:57
require Statement: Syntax
13:32
Include versus Require
13:52
Coding Conventions
16:33
Coding Conventions
16:34
Introduction to Our Web Application
20:32
Introduction to Our Web Application
20:33
Updating Web Application
21:14
Web Application Example
22:59
Homework Challenge
35:33
Homework Challenge
35:34
Homework Challenge (cont.)
37:38
Homework Challenge (cont.)
37:39
Arrays

34m

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
What is an Array?
0:42
What is an Array?
0:43
Arrays in PHP
1:44
Keys and Values
2:15
Types of Arrays
3:37
Indexed Arrays & Associative Arrays
3:38
array() Construct
6:47
Declaring Arrays
6:48
Defining Indexed Array
7:00
Defining Associative Arrays
7:43
Square Bracket Syntax
8:50
Square Bracket Syntax
8:51
Accessing Indexed Arrays
9:02
Accessing Associative Arrays
9:56
Arrays Example
10:41
Indexed Arrays Example
10:45
Associative Arrays Example
13:55
Multi-Dimensional Arrays
18:28
Multi-Dimensional Arrays
18:29
Multi-Dimensional Arrays Example
18:51
Multi-Dimensional Arrays in PHP File
20:34
Coding Conventions: Arrays
27:59
Coding Conventions: Arrays
28:00
Homework Challenge #1
29:20
Homework Challenge #1
29:21
Homework Challenge #2
30:38
Homework Challenge #2
30:39
Web Application Development

27m 38s

Intro
0:00
Versions
0:14
Version 3.0
1:23
Version 3.1
8:08
Version 3.2
11:42
Version 3.3
20:27
Homework Challenge
26:31
Homework Challenge
26:32
Script Input & The GET Method

30m 18s

Intro
0:00
Lesson Overview
0:15
Lesson Overview
0:16
Providing Input to PHP
0:39
GET Method, POST Method, and Cookies
0:40
Name/Value Pairs
1:22
GET Method
1:57
HTTP GET Method
1:58
Query String
2:52
GET Method Example
3:38
GET Method Example
3:39
Review of HTML Forms
8:16
HTML Forms
8:17
Input Control and Submitted Form
9:13
<form> Tag
10:07
<form> Tag
10:08
Method
10:34
Action
11:13
Input Control Examples
11:50
Input Control Examples
11:51
Common Input Controls
17:31
Common Input Controls
17:32
Query Strings
18:52
Query Strings
18:53
Query Strings Syntax
19:12
URL Encoding
20:01
URL Syntax
20:02
Examples
21:17
Simple Form Example
22:28
urlencode() Function
24:08
urlencode() Function
24:09
Example
25:03
urlEncoding Text Example
25:54
Simple Form Example
25:55
Homework Challenge
28:46
Homework Challenge
28:47
Accessing Form Data in PHP

32m 1s

Intro
0:00
Lesson Overview
0:17
Lesson Overview
0:18
$_GET Array
0:48
$_GET Array
0:49
Accessing the Value of a Name/Value Pair Submitted Via GET
1:04
Name Form Example
2:54
Name Form and the $_GET Array
2:55
Using Arrays with Input Controls
6:34
Using Arrays with Input Controls
6:35
Common Example
6:47
Indexed Array Form Example
8:16
Indexed Array Form Example
8:17
Associative Arrays with Input Controls
10:14
Associative Arrays with Input Controls
10:15
Associative Arrays Example
11:41
Associative Arrays Example
11:42
Echo Form Example
15:18
Echo Form Example
15:19
Outputting Arrays In String
23:42
Variable Interpolation
23:43
Outputting a Value in an Indexed Array Within a String
24:12
Simple' Syntax, 'Complex' Syntax, and 'Curly Brace' Syntax
25:00
Outputting Arrays In String Example
26:25
Outputting Arrays In String Example
26:26
Homework Challenge
29:39
Homework Challenge
29:40
Web Application Development

20m 20s

Intro
0:00
Lesson Overview
0:19
Lesson Overview
0:20
Version 3.3
0:38
Version 3.3
0:42
Version 4.0 Changelog
2:43
GET Query
2:45
Adding, Editing, and Removing
3:24
Version 4.0 Coding Example
3:55
item.php, itemID, and itemListing
4:00
Version 4.1 Changelog
10:36
Version 4.1 Changelog
10:37
Version 4.1 Coding Example
11:45
Adding Checkout and Thank You & Editing Footer and Store
11:46
Homework Challenge
18:45
Homework Challenge
18:46
Expression & Operators

31m 56s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
Expressions
0:41
Expressions Definition
0:42
Example: Literals
0:55
Example: Variables
1:05
Operators
1:44
Operators Definition
1:45
Unary, Binary, and Ternary Operators
2:07
Assignment Operators
2:52
Assignment Operators
2:53
Array Assignment Operator
3:47
Arithmetic Operators
6:15
Operators for Common Arithmetic Operations
6:16
Modulus Operator
7:41
Arithmetic Operators Example
8:25
Increment/Decrement Operators
10:48
Increment/Decrement Operators
10:49
Pre- and Post- Increment/Decrement
12:43
Coding Example
15:14
Combined Assignment Operators
16:44
Combined Assignment Operators
16:45
Combined Assignment Operators Examples
18:23
Coding Example
19:39
String Operators
20:28
Concatenation Operator, String Variables, and String Literals
20:29
String Operators Example
22:41
Precedence & Associativity
23:40
Precedence & Associativity
23:41
Expression Containing Multiple Operations
23:58
Expression Containing Two Operations of Equal Precedence
25:55
Using Parentheses to Force Precedence
26:52
Precedence & Associativity Review
28:57
Homework Challenge
31:08
Homework Challenge
31:09
Web Application Development

20m 51s

Intro
0:00
Lesson Overview
0:15
Lesson Overview
0:16
Version 4.1 Review
0:33
Version 4.1 Review
0:34
Version 5.0 Changelog
1:05
Version 5.0 Changelog
1:06
Version 5.0 Example
2:19
Adding View Cart & Editing Checkout, Footer and Store
2:20
Version 5.1 Changelog
15:36
Version 5.1 Changelog
15:37
Version 5.1 Coding Example
17:33
Forwarding Order Total to Thank You Page
17:34
Homework Challenge
20:09
Homework Challenge
20:10
Boolean & Null Data Types

20m 11s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Boolean Data Type
0:38
Boolean Data Type
0:39
Two Boolean Literals
1:24
Boolean Example
1:50
Boolean Example
1:51
Comparison Operators
4:00
Comparison Operators Definition
4:01
Common Comparison Operators
4:40
Comparison Operators Example
6:49
Comparison Operators (Cont.)
10:10
Identical and Not Identical
10:11
Example: Identical and Not Identical
11:24
Null Data Type
13:36
Null Data Type Definition
13:37
Null Literal
14:08
Variable and Null Data Type
14:30
'==' Operator
15:24
Null Data Type Example
15:59
Coding Convention
18:41
Coding Convention
18:42
Homework Challenge
19:17
Homework Challenge
19:18
Type Casting

22m 41s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Type Juggling
0:54
Type Juggling
0:55
Automatic Conversion
2:23
Type Casting
3:53
Type Casting
3:54
Implicit and Explicit Type Casting
4:00
Explicitly 'cast' a Variable Example
4:16
Type Casting (cont.)
6:48
PHP Allows the Following Explicit Type Casts
6:49
The settype () Function
8:18
Type Casting Coding Example
9:00
Explicit Type Casts
9:01
String Conversions
14:52
String Conversions
15:05
Common Conversions to String
15:55
Numeric Conversions
18:18
Numeric Conversions
18:19
Boolean Conversions
20:29
Boolean Conversions
20:30
Homework Challenge
21:38
Homework Challenge
21:39
Introduction to Functions

52m 20s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
What are Functions?
0:51
Definition of Faction
0:52
PHP and Function Call
1:53
Function Calls
2:42
Function Calls
2:43
Function Arguments
3:17
Return Values
4:56
Return Values
4:57
Function Chaining
6:29
Function Chaining
6:30
PHP.net Function Reference
8:23
PHP.net & Function Prototypes
8:24
PHP.net Function Reference Example
9:29
Optional Function Arguments
12:28
Optional Function Arguments
12:29
String Functions
14:57
strtoupper() and strtolower()
14:58
implode (), str_replace(), explode(), strpos(), substr(), and strlen()
18:31
Array Functions
25:48
count()
25:49
in_array() and array_key_exists()
26:06
sort() and ksort()
26:37
Example: count() and in_array()
27:50
Example: array_key_exists()
29:53
Example: sort() and ksort()
31:20
Date & Time Functions
33:38
date() and time()
33:39
getdate()
34:49
mktime()
35:01
Date & Time Functions
35:12
Example: date() and time()
35:58
Example: getdate()
42:15
Example: mktime()
43:15
Homework Challenge #1
44:31
Homework Challenge #1
44:32
Homework Challenge #1 (Cont.)
45:28
Homework Challenge #1 (Cont.)
45:29
Homework Challenge #2
46:34
Homework Challenge #2
46:34
Homework Challenge #2 (Cont.)
48:06
Homework Challenge #2 (Cont.)
48:07
Homework Challenge #2 (Cont.)
49:17
Homework Challenge #2 (Cont.)
49:18
Homework Challenge #3
50:08
Homework Challenge #3
50:09
Constants

19m 24s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Constants vs. Variables
0:55
Constants vs. Variables
0:56
Constant Identifiers
2:28
Constant Identifiers Definition and Examples
2:29
Declaring Constants
3:47
Two Ways of Declaring Constants
3:48
Syntaxes
4:10
Major Difference in the Two Forms
4:48
Using Constants Example
6:25
Using Constants Example
6:26
Coding Conventions
11:08
Constant Names
11:09
define () Function
11:42
Meaningful Names
12:00
$_SERVER Superglobal
12:23
$_SERVER
12:24
$_SERVER ['DOCUMENT_ROOT']
13:15
$_SERVER Superglobal Example
13:52
Homework Challenge
17:40
Homework Challenge
17:41
Web Application Development

26m 29s

Intro
0:00
Lesson Overview
0:13
Lesson Overview
0:14
Version 6.0
1:13
Version 6.0 & Version 5.1 Review
1:14
Version 6.0 Changelog
11:24
Version 6.0 Changelog
11:25
Version 6.1 Changelog
12:00
Version 6.1 Changelog
12:01
Version 6.1 Coding Example
12:42
Version 6.1 Coding Example
12:43
Version 6.2 Changelog
15:18
Version 6.2 Changelog
15:19
Version 6.2 Coding Example
18:19
Version 6.2 Coding Example
18:20
Homework Challenge
25:24
Homework Challenge
25:25
Conditional Control Structures

18m 58s

Intro
0:00
Lesson Overview
0:26
Lesson Overview
0:27
Statement Groups
0:57
Statement Groups
0:58
Example
1:10
Conditional Control Structures
1:38
Conditional Control Structures
1:39
PHP Control Structures
1:56
if Statement
2:32
if Statement
2:33
if Statement (cont.)
3:49
if Statement Coding Example
3:50
else Statement
7:26
else Statement
7:27
if/else Statement Coding Example
8:50
isset() Construct
9:59
isset() Construct
10:00
isset() Construct Coding Example
12:00
Coding Conventions
15:13
Coding Conventions
15:14
Coding Conventions (Cont.)
16:39
Coding Conventions (Cont.)
16:40
Homework Challenge
17:25
Homework Challenge
17:26
Error Handling

19m 8s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Error Handling in PHP
0:41
Error Handling in PHP
0:42
Coding Example
1:45
error_reporting() Function
7:02
error_reporting() Function
7:03
Coding Example
8:04
Additional Error Directives
9:02
display_errors
9:13
log_errors
9:37
error_log
9:50
track_errors
10:12
Coding Examples
10:29
Error Control Operator
13:38
Error Control Operator & Coding Example
13:39
Homework Challenge
16:19
Homework Challenge
16:20
Homework Challenge (cont.)
17:58
Homework Challenge (cont.)
17:59
Logical & Ternary Operators

23m 22s

Intro
0:00
Lesson Overview
0:17
Lesson Overview
0:18
Logical Operators
0:49
Logical Operators Definition
0:50
NOT (!)
1:08
OR ( ||, or)
1:35
AND (&&, and)
2:08
XOR (xor)
2:30
Logical Operators (cont.)
2:54
The OR and AND Logical Operators
2:55
Precedence of Logical Operators
3:35
Logical Operators Coding Example
3:58
Logical Operators Coding Example
3:59
Short-Circuit Operators
9:54
Short-Circuit Operators
9:55
Coding Example
10:49
Ternary Operator
14:07
Ternary Operator
14:08
Syntax and Example
14:24
Coding Conventions
17:36
Coding Conventions
17:37
Homework Challenge
19:08
Homework Challenge
19:09
Homework Challenge (cont.)
20:26
Homework Challenge (cont.)
20:27
Web Application Development

19m 27s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Version 6.2 Review
0:26
Version 6.2 Review
0:27
Version 7.0 Changelog
2:39
Version 7.0 Changelog
2:40
Version 7.0 Coding Example
4:35
Version 7.0 Coding Example
4:36
Version 7.1 Changelog
12:43
Version 7.1 Changelog
12:44
Version 7.1 Coding Example
13:52
Version 7.1 Coding Example
13:53
Homework Challenge
17:42
Homework Challenge
17:43
More Conditional Control Structure

20m 49s

Intro
0:00
Lesson Overview
0:13
Lesson Overview
0:14
elseif Statement
0:45
elseif Statement
0:46
elseif Statement Coding Example
1:22
Multiple elseif Statements
2:16
Multiple elseif Statements
2:17
Multiple elseif Statements Coding Example
3:07
Adding an else Statement
5:44
Adding an else Statement Overview
5:45
Adding an else Statement Coding Example
6:50
switch() Statement
8:07
switch() Statement
8:08
switch() Statement (Cont.)
9:14
switch() Statement (Cont.)
9:15
switch() Statement Coding Example
11:09
default Case
14:20
default Case
14:21
default Case Coding Example
15:13
Coding Conventions
15:57
Coding Conventions
15:58
Coding Conventions (cont.)
17:10
Coding Conventions (cont.)
17:11
Homework Challenge
18:06
Homework Challenge
18:07
Homework Challenge (cont.)
19:18
Homework Challenge (cont.)
19:19
Nested Conditional Control Structures

24m 49s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
Nested Control Structures
0:36
Nested Control Structures
0:37
Nested Control Structures Coding Example
2:08
Coding Conventions
6:34
Nested vs. Not Nested Control Structures
6:35
Debugging Control Structures
7:51
Debugging Control Structures
7:52
Incorrectly Specified Test Conditions and Forgetting a Break Statement
8:32
Incorrectly Placing an Opening or Closing Curly Brace
12:14
Debugging Tips
16:24
Tracing the Execution of Your Code
16:25
Adding Echo Statement
17:15
Homework Challenge
21:41
Homework Challenge
21:42
Homework Challenge (cont.)
23:08
Homework Challenge (cont.)
23:09
Web Application Development

28m 20s

Intro
0:00
Lesson Overview
0:13
Lesson Overview
0:14
Version 7.1 Review
0:46
Version 7.1 Review
0:47
empty () Construct
1:38
empty () Construct
1:39
empty () Construct Coding Example
2:37
Version 8.0
5:32
Version 8.0 Overview
5:33
Version 8.0 Coding Example
7:08
Version 8.0 Coding Example
7:09
Version 8.1
16:13
Version 8.1 Overview
16:14
Version 8.1 Coding Example
19:48
Version 8.1 Coding Example
19:49
Homework Challenge
26:19
Homework Challenge
26:20
Sending Email Using PHP

43m 50s

Intro
0:00
Lesson Overview
0:14
Lesson Overview
0:15
Built-in Mail Extension
1:28
Built-in Mail Extension
1:29
SMTP Overview
2:04
SMTP Overview
2:05
SMTP - Windows
3:08
SMTP - Windows
3:09
SMTP - Linux/UNIX
4:58
SMTP - Linux/UNIX
4:59
Mail Configuration Directives
6:35
Mail Configuration Directives
6:36
Coding Example
7:48
Mail Server Authentication
10:20
Mail Server Authentication
10:21
fake sendmail Program
12:27
fake sendmail for Windows
12:28
Main 'add-on' feature
13:03
Username & Password
13:25
SMTP - XAMPP for Windows
14:07
SMTP - XAMPP for Windows
14:08
Sendmail Example
16:19
Sendmail Example
16:20
mail() Function
18:39
mail() Function
18:40
additional_headers
19:45
'From' Header
20:12
mail() Function Coding Example
21:09
mail() Function Coding Example
21:40
Web Application Development
31:43
Version 9.0 Changelog
31:44
ContactUs.php
32:52
ContactUs.php
32:53
contactInfo
33:45
Version 9.0 Coding Example
34:31
Version 9.0 Coding Example
34:32
Homework Challenge
41:32
Homework Challenge
41:33
User-Defined Functions

56m

Intro
0:00
Lesson Overview
0:16
Lesson Overview
0:17
Defining Functions
1:29
Four Parts of Defining a Function
1:30
Functions Example 1
2:29
Function Parameters
5:29
Function Parameters
5:30
Functions Example 2
8:20
Return Statements
12:53
Return Statements
12:54
Functions Example 3
14:20
Where to Define Functions
20:34
Where to Define Functions
20:35
include_once Construct
22:10
include_once Construct
22:11
include_once Coding Example
23:55
Reasons to Use Functions
27:44
Take Advantage of Code Reuse
27:45
Improve Code Readability
29:56
Use Instead of 'content' Include Files
32:12
Web Application Development
34:42
Version 10.0 Changelog
34:43
Version 10.0 Coding Example
37:55
Version 10.0 Coding Example
37:56
Outputting HTML in Functions
47:04
Outputting HTML in Functions
47:05
Example
49:02
Coding Conventions
53:16
Coding Conventions
53:17
Homework Challenge
54:33
Homework Challenge
54:34
Variable Scope

31m 37s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
What is Variable Scope?
0:57
Variable Scope
0:58
Global Scope
1:15
Local Function Scope
1:50
Variable Scope Coding Example
2:26
Variable Scope Coding Example
2:27
global Keyword
8:52
global Keyword Overview
8:53
global Keyword Example
9:25
Superglobals
12:34
Superglobals
12:35
Superglobals Example
14:53
Pitfalls of Global Variables
18:34
Pitfalls of Global Variables
18:35
When to Define Variables
22:09
When to Define Variables
22:10
Putting It All Together
22:56
Putting It All Together Example
22:57
Function Scope
28:56
Function Scope
28:57
Homework Challenge
29:41
Homework Challenge
29:42
Homework Challenge (cont.)
30:59
Homework Challenge (cont.)
31:00
Web Application Development

28m 27s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Version 11.0 Changelog
0:56
Version 11.0 Changelog
0:57
processGetVar()
1:42
processGetVar() Overview
1:43
processGetVar() Example
2:25
emailComments()
6:35
emailComments() Overview
6:36
emailComments() Example
7:14
outputItemLink()
11:19
outputItemLink() Overview
11:20
outputItemLink() Example
11:45
calcCartTotal()
19:25
calcCartTotal() Overview
19:26
calcCartTotal() Example
21:14
Homework Challenge
25:56
Homework Challenge
25:57
Optional Parameters

19m 35s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
Optional Parameters
0:26
Optional Parameters Definition
0:27
Default Values
0:53
Optional Parameters Coding Example
3:26
More on Optional Parameters
6:55
Multiple Optional Parameters
6:56
Coding Example
8:05
Homework Challenge
16:18
Homework Challenge
16:19
Web Application Development

23m 7s

Intro
0:00
Lesson Overview
0:13
Lesson Overview
0:14
Version 12.0 Changelog
0:55
Version 12.0 Changelog
0:56
Update to outputLink()
1:44
Update to outputLink()
1:45
outputLink() Coding Example
2:40
outputImg()
13:57
outputImg() Overview
13:58
outputImg() Coding Example
15:35
Homework Challenge
22:05
Homework Challenge
22:06
Introduction to Conditional Loops

57m 20s

Intro
0:00
Lesson Overview
0:08
Lesson Overview
0:09
while Loop
0:48
Definition
0:49
Syntax and Usage
1:12
Coding Example
3:33
Looping Over Arrays
13:16
Looping Over Arrays
13:17
Coding Example
13:53
Looping Over Arrays (cont.)
16:43
Internal Array Pointer
16:44
Array Traversal Functions
17:29
current ()
17:30
next () and prev ()
18:16
reset () and end ()
19:25
key ()
19:40
Indexed Arrays: Using current () and next ()
20:40
Indexed Arrays: Using current () and next ()
20:41
Associative Arrays: Using key (), current (), and next ()
24:06
Associative Arrays: Using key (), current (), and next ()
24:07
Array Traversal Functions (cont.)
29:41
list () Construct and Example
30:07
each () Construct and Example
34:40
Lopping Over Arrays Using list(), each()
42:13
Lopping Over Arrays Using list(), each()
42:14
Control Structure Scope
50:37
Definition and Example
50:38
Control Structure Scope Coding Example
51:59
Coding Conventions
54:20
Coding Conventions
54:21
Homework Challenge
54:58
Homework Challenge
54:49
More on Conditional Loops

35m 50s

Intro
0:00
Lesson Overview
0:08
Lesson Overview
0:09
do-while Loop
0:42
do-while Loop
0:43
Simple do-while Loop Example
1:51
Another do-while Loop Example
4:09
continue Statement
10:46
continue Statement
10:47
For Example
11:07
continue Statement Coding Example
12:44
break Statement Re-Visited
18:10
break Statement Re-Visited
18:11
break Statement In while Loops Example
19:38
Infinite Loops
23:26
Infinite Loops
23:27
Coding Example
24:57
Common Loop Pitfalls
25:59
Counter Initialization Occurs in Loop
26:30
Counter Not Incremented in Loop
29:30
Unreachable Break Statement
30:50
Coding Conventions
33:48
Do-while Statements Coding Conventions
33:49
Homework Challenge
34:28
Homework Challenge
34:29
Web Application Development

22m 7s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
Version 13.0 Changelog
0:48
Updating 'viewCart.php' and calcCartTotal()
0:49
Creating isValidCart()
9:22
Adding Three New Item to the Store & Links
15:56
Version 13.1 Changelog
17:20
Updating outputItemLink() to Remove Its Global Dependency on $itemCatalog
17:21
Homework Challenge
20:34
Homework Challenge
20:35
For & Foreach Loops

29m 28s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
for Loops
0:45
for Loops
0:46
Expression 1
1:22
Expression 2
1:47
Expression 3
2:01
Simple Example
2:27
Simple Example
2:28
Notes on for Loops
8:56
Notes on for Loops
8:57
Ending Loop Using Test Condition and Break Statement
10:06
Ending Loop Using Test Condition and Break Statement
10:07
foreach Loops
12:03
foreach Loops
12:04
Indexed Array Syntax
14:10
Syntax
14:11
Example
15:23
Associative Array Syntax
18:31
Syntax
18:32
Example
19:47
Coding Conventions
25:05
for Loops
25:06
foreach Loops
25:58
Homework Challenge
26:52
Homework Challenge
26:53
Web Application Development

25m 58s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Version 14.0 Changelog
1:19
Version 14.0 Changelog
1:20
Version 14.0 Coding Example
1:57
Version 14.0 Coding Example
1:59
Version 14.1 Changelog
5:39
Version 14.1 Changelog
5:40
Version 14.1 Coding Example
7:06
Version 14.1 Coding Example
7:07
Version 14.2 Changelog
15:37
Version 14.2 Changelog
15:38
Version 14.2 Coding Example
16:25
Version 14.2 Coding Example
16:26
Homework Challenge
23:35
Homework Challenge
23:36
Conditional Loop Wrap-Up

23m 12s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Nested Conditional Loops
0:39
Nested Conditional Loops
0:40
Coding Example
1:10
continue & break Re-Visited
5:17
Continue Statements and Coding Example
5:30
Break Statements and Coding Example
11:34
Loop Debugging Tips
15:16
Add Short Debug Statement At the Very Beginning
15:17
Output a Counter Variable
18:10
Add Debug Statement At the Very End
19:20
Homework Challenge
20:20
Homework Challenge
20:21
Homework Challenge (cont.)
22:00
Homework Challenge (cont.)
22:01
Variable-Length Parameter Lists

22m 16s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Variable-Length Parameter Lists
0:34
Variable-Length Parameter Lists
0:35
Coding Example
1:51
Variable-Length Parameter Lists (cont.)
5:21
When a Parameter List is Defined For the Functions
5:22
Coding Example
6:32
Variable Type Functions
9:54
is_int (), is_float (), is_string (), and is_bool()
9:55
is_ array ()
10:50
is_null ()
11:01
Variable Type Functions Coding Example 1
11:27
is_numeric() and Example
15:57
Variable Type Functions Coding Example 2
17:12
Homework Challenge
19:35
Homework Challenge
19:36
Homework Challenge (cont.)
20:52
Homework Challenge (cont.)
20:53
Web Application Development

38m 36s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
Version 15.0 Changelog
0:33
outputLink (), outputImg (), is_array () and is_string ()
0:34
Version 15.0 Coding Example
1:31
Version 15.0 Coding Example
1:32
Version 15.1 Changelog
7:55
Removing Redundant Code and Adding New Function Called outputHtmlTag ()
7:56
Version 15.1 Coding Example
8:37
Version 15.1 Coding Example
8:38
Version 16.0 Changelog
14:55
Creating emailOrder() Using New Constants ORDER_EMAIL_FROM and ORDER_EMAIL_SUBJECT
14:56
Version 16.0 Coding Example
16:30
Version 16.0 Coding Example
16:31
Version 16.1 Changelog
32:21
Creating formatAsDollars ()
32:22
Version 16.1 Coding Example
32:57
Version 16.1 Coding Example
32:58
Homework Challenge
36:27
Homework Challenge
36:28
Miscellaneous Topics

31m 49s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
register_globals Directive
0:58
register_globals
0:59
Coding Example
2:04
$_GET vs. $HTTP_GET_VARS
4:07
$_GET vs. $HTTP_GET_VARS
4:08
register_long_arrays Directive Coding Example
5:44
Magic Constants
7:30
Magic Constants
7:31
__LINE__, __FILE__, __FIR__, and __FUNCTION__
8:16
Coding Example
9:06
exist() & die()
13:19
exist() & die()
13:20
Coding Example
14:08
Execution Operator
16:23
Execution Operator
16:24
Coding Example
17:27
Array Operators
18:23
Equality (==) and Inequality (!=, <>)
18:43
Identity (===) and Non-Identity (!==)
19:13
Union (+) Operator
19:41
Array Operators Coding Example
20:07
Variable Variables
24:13
Variable Variables
24:14
Coding Example
26:07
Variable Functions
28:02
Variable Functions
28:03
Coding Example
29:13
Loading...
This is a quick preview of the lesson. For full access, please Log In or Sign up.
For more information, please see full course syllabus of Introduction to PHP
  • Discussion

  • Download Lecture Slides

  • Table of Contents

  • Transcription

  • Related Services

Lecture Comments (1)

0 answers

Post by Nathan Bear on October 3, 2012

How would you go about building a link that can access image subfolders?

Such as mysite/images/teeshirts/1001.jpg

Web Application Development

Lecture Slides are screen-captured images of important points in the lecture. Students can download and print out these lecture slide images to do practice problems as well as take notes while watching the lecture.

  • Intro 0:00
  • Lesson Overview 0:12
    • Lesson Overview
  • Version 11.0 Changelog 0:56
    • Version 11.0 Changelog
  • processGetVar() 1:42
    • processGetVar() Overview
    • processGetVar() Example
  • emailComments() 6:35
    • emailComments() Overview
    • emailComments() Example
  • outputItemLink() 11:19
    • outputItemLink() Overview
    • outputItemLink() Example
  • calcCartTotal() 19:25
    • calcCartTotal() Overview
    • calcCartTotal() Example
  • Homework Challenge 25:56
    • Homework Challenge

Transcription: Web Application Development

Hello again, and welcome back to Educator.com's Introduction to PHP course.0000

In today's lesson, we are going to be continuing work on our web application, incorporating what we learned in our last lesson about variable scope.0004

In today's lesson, we are going to go over a new version of the web application, which is going to be version 11.0.0014

And as a part of that, we are going to be adding four new functions to our function libraries.0019

The first one is called processGetVar, which is used to process GET variables.0026

We are going to have an email comment function, in which we are going to extract the part of our contactUs.php script0032

that does the emailing of the comments.0039

We are going to add a function that is going to be used to output item links, and that is going to be used in viewCart.php.0043

And then, we are also going to create a function called calcCartTotal, which is going to be used to calculate our Shopping Cart total.0049

In version 11.0, as mentioned, we are going to be adding these four new functions.0059

What they are going to do is promote us reusing code, as well as aiding in the separation of our PHP and HTML,0063

which, as we began talking about in User-Defined Functions, is an important feature of your web application.0073

These are the files that we are going to be editing, down here.0079

So note, we are going to be editing both outputLIB.php and utilLIB.php, which are function libraries.0082

And then, the other pages that we are going to be editing make use of these two functions that we have created,0090

except for config.php, which--the only reason it is listed here is because we are updating a new version number for that file.0096

The first function that we are going to be creating for this version of the web application is called processGetVar.0104

And it is going to be in utilLIB.php, and it is a utility function that puts common code used on all of our pages that use GET variables0111

into a function, so that we can reuse it in multiple spots.0120

The three pages that we have that use GET variables are checkout.php, contactUs.php, and item.php.0124

And what this function is going to demonstrate from our last lesson is the use of superglobals within local function scope.0131

And as we learned before, there are two scopes in PHP: there is global scope and local function scope.0140

Let's take a look at using this new function.0145

First, if we go, for example, and look at...this is version 10.0 of checkout.php, what we can see here at the beginning is:0152

when we process all of our GET variables, here we have action and cartItems; there is also customerData and orderTotal.0161

And if we look, we can see that basically the same code is being reused over and over.0169

We are using a ternary operator to decide whether to set action equal to a variable specified or null,0174

which depends on whether the GET variable is set or not.0180

And as you see, between this line here (the one for cartItems), the one for customerData, and orderTotal, the only difference in the code0184

is what the variable name is that is included within the square brackets for the GET array.0192

So, what we can do is "parametize" that and create a function that is just going to0202

accept the name of the GET variable that we want to process, and it is going to perform the same action.0207

So, if we go and look at utilLIB.php, down at the bottom, the function processGetVar is created.0213

And what it does is: you can see here, it's a simple one-line function, and what it does is the same operation that we saw on the last page0224

(I'll move it up a little bit) in that, first of all, it accepts one parameter, variableName,0233

which is the name of the GET parameter that we want to process.0241

And then, what we do is: we test to see if that variable was set in the GET superglobal.0245

And if it is, we return the value of that GET variable; and if not, we return the value of null.0253

So, we are performing the same operation, but we are doing it within one function.0260

And as you will notice, we are accessing the GET superglobal variable; so this is an example of accessing superglobals within the local function scope.0264

And as you can see here, in the description that I have given of how the function works, along with parameters and return values,0274

I also typically like to include a section that mentions any global dependencies.0281

And so here, I just mention that this function depends on the global variable, and the superglobal variable, the _GET.0285

If we go back and look...this is checkout.php from version 10.0, and if we look at version 11.0,0295

we can see that all of those ternary operations were replaced with a call to the processGetVar function.0305

And we specified, as the argument to that function, the name of the GET variable which we want to process.0312

This is going to perform the same action; it is going to test if action exists.0319

If it does, it is going to set the short version of our GET variable action to the value that was provided, or input, to the page.0323

If not, it is going to set it equal to null.0334

And as you can see, we have reused the same function down here in all of these other spots.0336

And so, it has actually kind of cleaned up our code a little bit, in that 1) it looks a little neater, in that we have a simple function call,0341

versus a long ternary operator; but also, again, the advantage of doing this and of using it in a function is that we get code reuse.0348

Whereas before, we had 4 different variables that we used a ternary operator to set the value of--that is 4 chances0357

where we could make mistakes in writing that ternary operation--here the only mistake we could make, because we are using the function,0367

is mistyping the name of the function's argument.0376

The other spots...if we look back at the LIB...we could mess up putting the name of the variable here, or the name of the variable here.0381

So, we are kind of reducing that at the same time that we are cleaning up our code.0389

The next function that we are going to create for this version of the web application is called emailComments.0397

What it is going to do is remove from contactUs.php our large section of PHP code that we use0403

to process the information that was input from the Contact Us form, in order to send out an email.0410

The function is going to be defined in utilLIB.php, and what it is going to do is demonstrate the use of constants.0418

In this case, we are going to be using the email constants, which we had defined previously in config.php.0424

And it is going to show how to use constants within local function scope.0430

Let's take a look at the old version of contactUs.php; this is version 10.0, and we scroll down the page into the final HTML Output section,0435

which we reach, if you remember, when the action provided to this form is equal to contactUs.0451

And you can see here that we create short variable names for the information provided by our contactInfo, which is a GET variable.0459

If we go back and look at the top, you can see that, in this contactInfo's setup here at the beginning of the page,0468

we set it up as a short variable for the GET variable contactInfo.0479

These are, again, shorter variables that we can use below in creating the email.0487

We can see here where we build up the email message; we create the email header; and here is where we send out the email message.0493

And then, we output a message to the user, saying whether the email sending was successful or not.0502

What we can do is extract all of this PHP code in this section here--extract it out into a function0508

and replace it with a single function call that is going to perform the same functionality.0516

If we look at contactUs.php version 11, and we scroll down to that same section in the code,0520

now that whole section of code that was related to sending the email has been updated to one line0528

that is the function call to emailComments.0535

And what it does is passes this GET variable, contactInfo, to the function, so that it can go ahead and build up an email, and then send it out.0538

Now, emailComments is going to return a boolean value, indicating whether the email was successfully sent or not.0547

And we can use that value, just as before, to output whether we are going to output a message0552

that says "Thank you for your comments" or "There was an error in sending us your comments."0558

One thing to note, too, is that, in version 11.0, at the beginning here, we have also made use0563

of our processGetVar function for this page, as well, for both the contactInfo and action GET variables.0568

If we go and look at utilLIB.php, and we go to the emailComments function, which is listed here, you can see, the same code0579

that we had in the contactUs page is now moved into this function.0592

We are creating short variables for the contact information data, which is useful in building up the email message.0598

Here is a section where we built up the email message that we are going to send.0605

Here we create the email header, and then, as before, we are going to call the mail function provided by PHP,0608

using our two constants that we defined in config.php.0618

So, this is an example of using constants, which have global scope, within the local function scope.0622

And as you will notice, we haven't had to declare them with the global keyword or use the GLOBALS superglobal array,0629

and that is because that is how constants work, as far as scope is concerned.0635

So, we send out the email, using the mail function, just as before; and what we do is suppress the error,0640

because if an error occurs, it is going to return false; and we simply return the return value of mail,0648

which is going to be true or false, depending on whether the mail was able to be successfully sent to the outgoing mail server.0653

And again, just a reminder from when we talked about the mail function before:0660

just because the mail function in PHP returns true, it doesn't necessarily guarantee that the message was going to be delivered.0663

But it does let you know that it was successfully passed along to the outgoing mail server, and that is as far as that function works.0670

The next function that we are going to create is called outputItemLink.0681

And this is something that is used in the viewCart.php page to output links to each of the different items' pages--their product information pages.0686

And what we are going to use this function for is to take common code that is included in viewCart.php,0697

move it out into a function, and make our code look a little bit cleaner.0702

If we go and look at viewCart (and this is version 11.0), we can see here that we have a link, and this is what is our outputItemLink function.0707

It is going to output this image, the small image of our item, which is a link to the item page.0719

If we click on it, it goes to the item page.0727

We also are going to be creating this text link that is the name of the item, and then when you click on that, it goes to the item page.0730

And as you can see here, we have three different items, and so this is a common function that is being performed.0738

We are outputting a link that contains an image and a name of the item.0743

And here, we do it three different times; so we are going to put that in a function and make use of it.0748

If we go and look at our previous version of viewCart.php, and scroll down the page, we can see here that, as before,0754

we have sections where we list the different items' information.0764

For example, we list item-1001's info, item-1002's info, and so forth.0769

And we have the three different columns of our table: one is the link to the item page, one is the price, and one is the quantity.0773

Well, here is the code that we had before in order to output the item link.0780

We defined the item ID of variable; we loaded the item from the catalog and created some short names to use in outputting our link.0785

And then, here is a section where we output the link to the items page.0794

One is a link that includes an image tag, so the image becomes a link.0803

And then, we also have a span here that includes a text link, that has the name of the item.0808

And the reason we have included them as separate links is just for formatting purposes.0814

But what you can see is: if we look down at, for example, the row for item-1002, you can see that, essentially, this is exactly the same code as before.0820

The only difference is that currentItemID is equal to 1002.0832

So, any time that we have the same code that we are using over and over again,0837

we want to take advantage of being able to put it in on spot, and therefore only having to change it in one spot.0840

So, we are going to put it into a function.0844

What we are going to do is: we are going to create a function called outputItemLink.php.0847

This is going to be in the outputLIB.php function library.0855

And the reason for that, again, is that we put all of our functions that output HTML into the same function library,0858

and for this web application, it's outputLIB.php.0866

So here, we can see the new function that we have created, outputItemLink.0869

It takes one function parameter, which is the item ID of the item that we want to look up and output the link for.0875

And what you can see here is: basically, it is the same code, slightly modified, that we had within the actual viewCart page.0889

But as mentioned, we used this code three times, so we are going to go ahead and put it in a function,0899

so we can just call the function three times, as opposed to actually having to write this code three times within our file.0903

Not only is it going to increase the maintainability, because we have less chances for mistakes,0908

but also, it is going to, as we will see, make our code look a little bit cleaner by getting rid of PHP code contained within an HTML file.0913

One important thing to notice is that this function makes use of the GLOBALS superglobal array.0922

And it does that in order to load the item catalog, which, if you remember, is contained in our catalog.php file.0928

It is a global variable, and so, in order to access global variables within local function scope (and this is a function),0936

we need to either use the global keyword or access them by the GLOBALS superglobal.0944

And here, that is what we have chosen to do; we could have also done it with the global keyword, as well.0950

And so, this function demonstrates using global variables within local function scope.0955

It also, down here, demonstrates, again, using constants within local function scope;0960

and here, you can see, we are using the IMAGE_DIR constant when we output our image tag.0965

And again, constants have a global scope, and they don't need to be prefaced with the global keyword when they are being used within a function.0971

So, this is the same code that we had within the file, but we have included it in a function.0978

Now, if we go and look at viewCart 11.0, and we go down and look at each of the rows for all of our different items,0983

here we have, for item-1001, significantly reduced the amount of PHP code within our HTML file.0994

Here, we have just defined currentItemID, as before, which is 1001.1004

And now, for the column where we would output the item link, which is the image and the name link to the item's page,1009

we simply have a function call that we echo, and we pass it the current item ID, which is 1001.1017

And as we know from just looking at the function outputItemLink, we can look up the global variable using the GLOBALS superarray,1021

and be able to load all of that item's information.1030

And then, here we go ahead and output the price, and our text box that receives the quantity of items the user desires.1032

Now, one thing to note is that the price column changed a little bit, because in our previous version, if you look,1041

because we actually loaded the item from the item catalog within viewCart.php,1049

we went ahead and created a short variable called curPrice that represents the current item's price.1055

And so, when we went down here to our column for outputting the item's price, we just referenced that short variable.1062

Well, in our new viewCart.php, we don't load the item here; we load it within this outputItemLink function.1070

So, we have to load that price manually here; and so here, we are, again, looking up (in itemCatalog) the current item,1076

which has the item ID, curItemID; and then we are getting the price value out of that array for that particular item.1088

And then, we are outputting it; and as you can see, for item-1002, we have the same thing.1100

We have replaced this with outputItemLink; for 1003, we have replaced the whole section with outputItemLink.1105

So, we go back up to item-1001; there is the start of item-1001.1110

And if we look at the same one on version 10.0, here is the code and HTML for outputting the link to item-1001.1122

As you can see here, we have a lot of PHP code contained within this first td tag.1133

Now, it is simply replaced with this one function call, so that really neatens up our file, and again, separates our HTML and PHP,1141

which is good, because if we have (for example) developers that work on PHP specifically, and developers1148

that usually just work on the HTML portion of the site, it allows the HTML developers1153

to work on the page without having to be involved with the PHP code itself.1159

The last function that we are going to add to this version is called calcCartTotal.1168

And what that is going to do is take the calculation operations that we did at the top of checkout.php,1172

when calculating the Shopping Cart total, and move them out into the function.1181

And again, the reason for this is to remove as much PHP code as we can from our HTML/PHP files that eventually get output to the user.1184

The function is going to be defined in our utility library, called utilLIB.php.1196

And what it is going to do is access global variables; it is going to access the item catalog that is defined globally in catalog.php,1201

which we include in all of our pages.1209

But it is going to access it differently: as opposed to using the GLOBALS superglobal, like we did in outputItemLink to access it,1212

or even using the global keyword, we are going to pass the item catalog itself into this calcCartTotal function.1219

And what that does is: it is going to reduce this function's dependency on the global variables.1234

So now, this function, in a way, becomes more of a standalone function that can be reused in other spots,1242

because the function will always be able to work in a way, because it is always going to have an item catalog passed to it.1246

So, it will always have an item catalog to work with.1251

If we directly access the global item catalog variable from within the function, using GLOBALS superglobal or the global keyword,1254

then we become dependent on the fact that that function is always going to have to work in a PHP web application1263

where that global variable is defined.1269

So, this is going to improve our function's reusability.1271

Let's go take a look at our old checkout.php page.1277

If we look at the top section, where we calculate the total of our cart, we have a bunch of arithmetic operations here1284

where we multiply each item's price times the quantity the user submitted, and cumulatively add it up.1296

Then, we multiply it times the sales tax rate to get our final total including sales tax, and then round it off.1304

Well, what we can do is remove all of this code right here out into a PHP function that we are creating called calcCartTotal.1311

And we are going to reduce this all to a simple function call.1320

If we look at version 11.0 of checkout.php, whereas we had all of those calculations before, right here in this section,1324

now it has become a single function call.1338

It is a function call to calcCartTotal; it is going to return the total calculated, which we are going to store1341

in the same variable that we had before, curTotal for current total.1345

calcCartTotal is going to take in two parameters: the first one is cartItems, and cartItems is (if we look at the top) a GET variable.1350

that is passed to the form from viewCart.php, and is an associative array that lists the item ID as the key,1363

and then the quantity selected by the user as the value, of the array.1372

We are going to pass that GET data on to our function.1375

And then, we are also going to pass along itemCatalog; and because we are in global scope right now1381

(we are not within a function in this script), itemCatalog is accessible.1387

It is a global variable, which we can find in config.php, and it has global scope.1391

So, we have access to it, so we are going to pass that variable directly to the function, so that it doesn't need to use1395

the GLOBALS superglobal or the global keyword in order to look up the item's price within the item catalog.1401

If we go and take a look at utilLIB.php, and we look at the function we have created called calcCartTotal,1410

here you can see, basically, it has the same code that we had used before, and we have just put it into a function.1418

And what it does is uses the item catalog that was passed into the function, as opposed to directly accessed using the global keyword,1427

to look up each of the items' prices, and then it multiplies it times the quantity of the item that was selected by the user,1437

which is the value associated with the key that is the item ID of the item you are interested in, in cartItems.1446

Again, cartItems is the GET variable that was passed to checkout.php from viewCart.php.1458

So, we perform the same calculations and cumulatively add up the total.1466

Here, we do have a little bit of global dependence, in that we are accessing the sales rate constant, which we had defined in config.php.1471

So, we go ahead and add the sales tax to the total, and then we return the total, rounded to two decimal places.1482

We are essentially performing the same things as before.1488

And as you can see up here, for global dependencies listed, we have a global dependency on the constant sales tax rate.1491

And actually, if we go ahead and look in another file, outputLIB.php, and look at our outputLink item link function,1499

there are actually two global dependencies; one is on the constant IMAGE_DIR,1515

and one is on requiring that this item catalog, global variable, be available.1518

So, in this new function that we have created, we don't have that dependency any longer--which, in general, is a good thing.1526

And so, here, once again: what calcTotal does is return the rounded-off value.1539

And then, when we go and look back at checkout.php, it returns that value to curTotal,1546

which we can use throughout the rest of the page, to output the total as needed.1551

For today's homework challenge (it is typical of our web application lessons), I just want to make sure1559

that you understand working with local function scope and global scope,1564

and understanding how, within our functions, we can access superglobals, constants, and global variables,1571

and the different ways that we do that.1578

Superglobals are always available; constants are always available without having to use the global keyword.1580

And then, any other global variables defined in our main script can be accessed by the global keyword or the GLOBALS superglobal.1585

Additionally, just note how, for item, outputItemLink, and calcCartTotal, we essentially are accessing global variables in different ways.1594

In this one, we are accessing it directly, using the GLOBALS superglobal array.1605

And here, we are reducing the dependency on the global variable by passing the catalog itself into the function,1610

so it has direct access to it without having to use the GLOBALS superglobal array.1620

The other thing is just to be sure that you understand, for step 3 here, how separating out the PHP code into our 4 different functions1629

is going to promote code reuse, because, as we saw several times, we are taking similar sections of code and "parametizing" it,1636

putting it into one function that we can call over and over.1645

So, if there are any problems with that code, we can edit it in one spot.1648

As we will see as our web application builds up, that is also a good thing, because then, maybe, if we change1652

how we want to (for example) process a GET variable, we only have to do that in one location,1656

as opposed to going through and doing it in every location where we process a GET variable.1661

And also, understand how doing functions allows for the separation of PHP and HTML,1666

where we are taking large sections of PHP in what are essentially files that are output to the user (they are .php files that contain1673

a mixture of PHP and HTML), taking the PHP out, and moving it into a function file.1681

And it cleans up our output pages that maybe an HTML developer would work with.1688

So, in the end, this ends up making a more flexible and easier-to-maintain web application.1694

That ends today's lesson; thank you for watching Educator.com--I look forward to seeing you next time.1702

Educator®

Please sign in for full access to this lesson.

Sign-InORCreate Account

Enter your Sign-on user name and password.

Forgot password?

Start Learning Now

Our free lessons will get you started (Adobe Flash® required).
Get immediate access to our entire library.

Sign up for Educator.com

Membership Overview

  • Unlimited access to our entire library of courses.
  • Search and jump to exactly what you want to learn.
  • *Ask questions and get answers from the community and our teachers!
  • Practice questions with step-by-step solutions.
  • Download lesson files for programming and software training practice.
  • Track your course viewing progress.
  • Download lecture slides for taking notes.