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.

Variable Scope

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

  • Study Guides

  • Download Lecture Slides

  • Table of Contents

  • Transcription

  • Related Services

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.
  • Learn at your own pace... anytime, anywhere!

Variable Scope

  • Variable scope refers to the part of a script where a variable can be accessed.
  • Variables defined in a script outside of a function have global scope . A variable with global scope can be used anywhere within the script it is defined or the files included in the script it is defined (*except within functions).
  • Variables defined in functions, including function parameters, have what is known as local function scope . Variables with local function scope can only be accessed from within the function.
  • The global keyword allows variables with global scope to be used within functions and variables with local function scope to be used in the global scope.
  • Superglobal variables are pre-defined associative array variables that are always available in both the global scope and local function scope.
  • The $GLOBALS superglobal contains all of the variables currently in the global scope of a script. It can be used to access global variables from within local function scope.
  • All constants are accessible in both the global and local function scope.
  • Functions have global scope, meaning as long as a function is defined within a script or one of its include files, it can be called anywhere within that script or its include files.
  • Additional Resources:

Variable Scope

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:09
    • Lesson Overview
  • What is Variable Scope? 0:57
    • Variable Scope
    • Global Scope
    • Local Function Scope
  • Variable Scope Coding Example 2:26
    • Variable Scope Coding Example
  • global Keyword 8:52
    • global Keyword Overview
    • global Keyword Example
  • Superglobals 12:34
    • Superglobals
    • Superglobals Example
  • Pitfalls of Global Variables 18:34
    • Pitfalls of Global Variables
  • When to Define Variables 22:09
    • When to Define Variables
  • Putting It All Together 22:56
    • Putting It All Together Example
  • Function Scope 28:56
    • Function Scope
  • Homework Challenge 29:41
    • Homework Challenge
  • Homework Challenge (cont.) 30:59
    • Homework Challenge (cont.)

Transcription: Variable Scope

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

In today's lesson, we are going to be talking about the concept known as variable scope.0004

Specifically, we are going to be talking about what variable scope is.0011

We are going to be talking about a special word in PHP, the global keyword.0014

We are going to go into more detail about superglobals, which is something we have mentioned0020

when we have talked about the _GET and _SERVER superglobal arrays that we have used in previous lessons.0023

We are going to talk more about actually what superglobals are.0031

We are going to talk about some of the pitfalls of using what are known as global variables.0033

We are going to talk about when variables are to be defined.0038

And then, we are going to finish up with an example that puts together all of the stuff that we have learned in the lesson,0042

and then quickly just talk about something that doesn't fall under variable scope, but is a related issue; it is called function scope.0049

What is variable scope? Well, essentially, variable scope refers to what in part of a script a variable is accessible.0058

For example, when we define a variable in our script, a=1, it is available within all of our script.0067

So far, all of the variables we have defined in our scripts are what are known as global variables, and have what is known as global scope.0075

And what that means is: once they are defined, they are able to be used anywhere within the file.0083

And they also can be used within any include files.0090

For example, on our web application, where we defined the pageTitle variable, when we include our header file,0093

it can access that pageTitle variable and use it, because it is within its scope.0100

It is a global variable, so it is available to the entire script and any of its include files.0106

However, now that we have introduced user-defined functions...variables defined in functions0111

have a different scope, what is known as local function scope.0117

And that affects the ability to use variables defined in your script within a function, and variables defined within a function within the script.0121

The reason is what is known as scoping rules.0130

Essentially, any variables that are defined within a function have local function scope, and they can only be accessed from within the function.0134

This include function parameters.0144

Let's take a look at a file called scope.php; we have a couple of functions here that we are going to get to in a second.0147

The first thing I am going to do is: in our script, we have two functions defined up here, and then we have a variable assignment statement0154

that declares a variable we are calling globalInt=25.0164

And because it is defined in our main script, as mentioned, just like all of our other variables we work with, it is a global variable.0169

So, it is accessible anywhere in the script; so when I type echo globalINT, PHP is going to know what that variable responds to.0174

That variable is going to have scope, and PHP is going to know where to find its value.0185

When I go ahead and load the page, it will output 25.0190

However, let's say (this function up here that we have created is called changeGlobalInt), for example, that we want to run this function,0197

and then change the value of this global integer from 25 to 0.0209

And that is what this function is going to do.0215

Well, 2 things to note: the first thing is that, if we go ahead and run this function, and then we echo globalInt again,0218

we are going to see that it does not get updated.0236

The reason is that globalInt is defined in the global scope (and so it has global scope),0240

but once you enter into a function, those global variables are no longer available.0246

So, even though we are referring to globalInt, which was previously defined in the script, and we are going to set it to 0,0251

this globalInt is kind of like its own separate variable; it only works within the function body.0257

And it doesn't affect this global variable defined out here.0264

This globalInt, even though it has the same name, is a local function variable..0269

So again, all we are doing here is setting the local function variable globalInt to 0.0274

The change doesn't get made, so here, when we echo globalInt, it is going to show 25.0282

When we run the function that is going to try to change the value, it is not going to work.0287

And so, we are still going to see that globalInt outputs 25, as well.0291

I just need to put a break statement here.0296

When we go around to the file, we see that 25 is output twice.0304

And again, the reason for that is that, within a function, you cannot access global variables.0307

At the same time, not only can you not change them, but you cannot access them, either, to output them.0317

For example, let's say we wanted to echo globalInt.0325

Now, one would think, "OK, we have run our script; we set globalInt to 25; we have output it."0330

"We call this function, and the first statement is echo globalInt--well, we would think since globalInt is set to 25, it should output it."0334

It was; but we will see that is not going to be the case; we are actually going to get a notice.0342

It is going to say that you have an undefined variable globalInt.0348

And that is because, within this function, globalInt has yet to be defined.0351

And within a function, it doesn't know about global variables.0354

The other side of that is that, in the global scope, you don't have access to variables defined within a function.0364

For example, we have a function here called localScope; it takes in one parameter, and it creates a variable called localInt=100.0375

Now, this is a local function variable, and what that means is: because it is defined within the function,0383

it is not available here in the outside script.0388

So, even if we were to (let's erase this) attempt to access this variable outside of the function, it wouldn't work,0391

even if we have already called the function.0409

For example, if we go ahead and call the function localScope, and just put a string that says Hello,0411

and now we call this function, it would get run; it would create this variable localInt=100.0427

And then, if we tried to echo that local variable out here, we are going to get an error, because it is defined within the function.0432

It has only function scope; it is not accessible outside the function.0439

So, when we run this, we are going to get another notice, and it is going to say undefined variable localInt on line 35.0443

We look at line 21 that is in our global scope, within the bigger script outside of the function; it doesn't know what localInt refers to.0453

At the same time (for example), we couldn't output param.0462

Even though, within the function, we could echo param that was passed in,0474

and that will work, because variables defined within a function are only available within that function,0479

so it knows about what param is; it is whatever value it was set to when the function was called (in this case, "Hello").0488

It will be able to echo it, but if we go down here and we try to echo it, it is not going to happen, because param only exists within the function.0494

For example, if we run the script, we will see that Hello is output, and then we get an error on line 36.0501

If we look back, Hello gets output because this echo statement knows what param is, because it has been defined within the function scope.0509

However, we get an error here, because we are trying to access the variable param that is only defined within the scope of the function.0518

That is the difference between global scope and local (function) scope.0525

Now, PHP does provide a way of being able to access global variables within functions, and function variables in the global scope.0533

And it does so by the keyword global.0541

What that does is: you can declare a variable within a function, and prepend it with this keyword global,0546

and that is saying that, any time you access that variable within that function,0551

you are going to be referring to the global version of that variable.0555

And you need to do it by declaring it again with the global keyword first.0562

So, for example, if we look at a script called globalKeyword.php, we have a function defined called accessGlobal,0565

which we are going to get to in a second.0575

But what we do is define a global variable called globalInt=25, and then we echo that value.0577

We say, "in global scope, globalInt equals" the value of it, which is going to equal 25.0586

Because we are in the global scope, it knows about that variable.0591

Now, when we call this function, accessGlobal, and we go up here, and in the first line, we try to output globalInt,0595

it doesn't know what globalInt is, because it hasn't been defined within that local function scope yet,0602

and it doesn't have access to global variables.0607

However, if we were to go ahead and redefine the variable by calling the variable name that we want to use0611

(that is a global variable) and prepending it with the keyword global, and then a space,0619

then, when we try to use the variable globalInt within the function, it is going to know that we are referring to the global variable globalInt.0623

So, this echo statement, where we are trying to echo globalInt, will actually work,0631

because the function now knows that globalInt refers to this global access variable.0636

In addition, the other thing we can do is: because now globalInt within the function refers to a global variable,0642

we can change the value of the global variable within the function; we can set it equal to 0.0650

And so, after this function ends, when we try to output globalInt again, it is not going to be 25 anymore; it is going to be 0.0655

So, if we go ahead and run this script, you will see a couple of things.0663

First, we are going to see that the first output of globalInt equals 25; and that comes from this first statement here,0673

where we are in the global scope, and we are able to output this global integer.0680

Now, accessGlobal...the first thing it tries to do is access and output that globalInt, but it doesn't exist,0685

because it's in the global scope, and it doesn't know about global scope variables.0692

So, we get this undefined variable on line 19; it says globalInt is undefined.0696

And when it tries to output it, it outputs a blank, because it has no value for it.0700

If we go back and look at line 19, this is where it is trying to access that global variable.0705

However, now that we have declared it here as a global variable, this echo statement actually works.0710

And so, when we look back at our script, we can see, the second statement in accessGlobal, after the declaration0715

globalInt with the global keyword, it is going to output the value globalInt=25.0723

You also notice that, because globalInt refers to the global variable globalInt now (because of this keyword),0729

we can change the value of it; and so, when we change it to 0 here, and we access it again0738

outside the function after the function has been called, its value is going to be updated.0743

And that is why you see the output here: in the global scope, globalInt is now equal to 0.0748

So now, we are going to talk about superglobals, which again, is a topic we have kind of talked about a little bit before, with the _GET and _SERVER variables.0757

Superglobals are predefined associative arrays by PHP that are always available in any scope.0764

They are available in global scope, and within function scope, which means that because they are global, you can use them0772

in the global scope of the script without a problem, because they are a global variable; but then, in a function, normally,0782

as we just saw, you need to specify with the keyword global in order to use a global variable.0787

Well, superglobals have the advantage of: you don't have to specify the global keyword before using them in a function,0792

like you would any other global variable.0801

Additionally, we are going to introduce a new superglobal called GLOBALS, interestingly enough.0805

And what that superglobal contains: it is an associative array that contains all of the global variables currently defined within your script.0811

And that allows you another way to access global variables within a function, because we know that we can't access global variables0821

within a function without using the global keyword.0829

However, we just learned that superglobals are available everywhere, and because the GLOBALS superglobal array0834

contains all of the global variables available, we can use that to access a global variable in the function.0843

I know it is a lot to soak in--a lot of "global" words being thrown around.0850

Essentially, the way that the GLOBALS array works is that the keys of the array are the identifiers, or the names, of all the current global variables.0854

And the values associated with those keys are just the current values of those global variables.0864

One other thing to mention is that constants, in a way, are kind of like superglobals, in that they are always available in all scopes.0871

They are available within function scopes; they are available within the global scope.0877

And like superglobals, you don't have to declare them within a function using a global keyword.0882

The way that they are not like superglobals is that they are not predefined by PHP.0889

So, let's go and take a look at a script that makes use of superglobals.0894

Here, we have a couple of functions at the top that we are going to talk about in a second.0900

Here we are at the beginning of our script; we are in the global scope--we are not inside a function.0906

And we are going to output the value of the superglobal variable _SERVER ['DOCUMENT_ROOT'].0911

And what that is going to show is that this superglobal is available within the global scope.0917

So, when we go ahead and run the script, the first output we should see is "in the global scope, _SERVER ['DOCUMENT_ROOT']=this."0922

Now, the next thing we do is call a function called useServer; and if we look up at the useServer function, it says,0935

"inside useServer," and it outputs the value of _SERVER ['DOCUMENT_ROOT'].0941

Now, because _SERVER is a superglobal variable, which is available in all scopes, we can access it within the function without using the global keyword.0945

And so, it should output its value; and when we look at the output (let's refresh it) we can see that the second output statement says,0955

"inside useServer, _SERVER ['DOCUMENT_ROOT'] equals" so-and-so.0962

And that shows you that you can access those superglobal variables within a function or in the global scope.0967

The other thing I want to demonstrate is the use of the GLOBALS superglobal that we have just talked about.0977

So, for example, if we define this global variable called globalInt, and we set it equal to 25,0983

and then we call the useGlobal function, if we look up at useGlobal, what it does is: it is trying to output the value of that globalInt variable.0989

Now, normally you have to declare the variable in the function, using the global keyword.1001

However, because all global variables are available within the global superarray, we can actually get access to it.1006

And the way you do that is: you access the GLOBALS superglobal array, and you specify the name GLOBALS,1013

and then use as the key the name of the global variable that you want to output.1026

And this is using the complex curly bracket notation, and what this is saying is,1030

"I want to get the value of the global variable called globalInt."1034

And because GLOBALS is available everywhere, because it is a superglobal, you shouldn't get an error here,1040

and this should work, and it should output the value 25.1045

So, when we go and look at our script, we can see that it says "in the function useGlobal, this variable here, globalInt of the GLOBAL array, equals 25."1048

The other thing is to demonstrate about constants: we define a constant in the global scope called PI.1062

And then, we are going to try to output that constant within the global scope, and we are going to see that that works,1067

because constants have scope everywhere, which means they can be used within functions or within the global scope.1073

So, this is going to work; and then, when we call the function useConstant, and we look up useConstant,1084

it is going to try to output the constant defined in the global scope.1089

Because constants have scope everywhere, it is going to work, and we will have access to it.1093

And so, when we look at our output, we can see: in the global scope, constant PI equals this value;1098

in useConstant function, it has the same value, which shows that you can access that constant1103

within the global scope or within local function scope.1108

We have introduced global variables, and now I just want to talk about some of the pitfalls of using global variables within functions.1115

In general, accessing global variables from within your functions should be avoided.1124

Instead, if you need to use the value of a global variable, you can pass it into the function as a parameter.1131

There are a couple of reasons for that--mainly that, by not accessing global variables within your functions,1137

you can increase the reusability, portability, and maintainability of your code.1145

And the reason for that is: first, by not using global variables, it eliminates a function's dependencies on a particular global variable.1151

For example, let's say you have a function named test, and we access the global variable...1161

maybe there is a global variable that exists that is just called a.1170

So, if we run that function test, and we use it to access a global variable a, as long as a is available as a global variable, that function is going to work.1174

Now, one of the reasons we create functions is to be able to reuse them; so let's say we put that function in a function library,1183

and we move it to our new web application.1189

In our new web application, maybe this variable a is no longer called a; it is called b.1191

Now, that function is not going to work anymore, because it is going to try to access the global variable a that doesn't exist.1198

So, when you include global variables within a function, you are creating dependencies on those global variables existing,1204

reducing the ability to reuse your code and to take it to other applications.1211

The other thing it does is: by not using global variables in functions, it reduces your debugging difficulties related to global variables being unexpectedly edited.1215

For example, if within a function we are using the global variable a, and we are doing some processing on a,1229

we expect a to be whatever the value is when the function started.1241

Now, let's say within our function, we go out and we call another function; let's say we called function test.1245

Maybe the test function is written by someone else, and it goes out and changes the value of a.1251

Now, if we were to go further down our script, and to try and access the a, and let's say we want to echo a,1260

we may have a problem, because we expect a to have the value that it had1272

when we first defined the global variable, when we entered the function.1278

But another function, because it is a global variable, might change that variable; so it can have unintended consequences.1282

And that can cause a problem--that is going to make things harder to debug, because we have to go and look1289

at all the other code, to see if any of the other functions access those global variables.1295

In some cases, which we are going to see more of in the advanced class, using global variables within functions cannot be avoided.1305

And when that happens, you want to make sure that you document these functions extremely well,1313

because that lets any programmers that are going to be using this function know that there is a dependency on a global variable.1319

So, if they want to use that function, they have to make sure that those global variables exist.1324

I just quickly want to mention when variables can be defined.1332

You need to define (and we have kind of seen this implicitly, and haven't really talked about it explicitly) a variable in order to use it.1336

It must be defined before it can be used, and this includes (as we just saw) using global variables within a function.1343

If you want to access a global variable within a function, if you are not using the GLOBALS superglobal array,1350

you need to prepend it with the global keyword; and that is declaring the variable to be available for use in that function.1356

And as we saw when we tried to access a global variable from within a function without using the global keyword,1364

essentially, that variable hadn't been defined yet, and so that is how we saw that we got an error.1370

I just want to show one final example that puts all of this together that we have learned about.1378

We have learned about global variables; we have learned about local variables, which are created for functions.1382

We have formally defined what the superglobals are; we have talked about the scope, as they relate to constants.1388

And then, we are also going to show how scope applies to using variables within include files.1394

So, if we go and look at this script called scopeRecap...at the beginning of this page, it includes a library called testLIB.php.1400

It has a couple of test functions that we are going to use in the main script.1411

The first thing we do in the beginning of the script is: we define a global integer, and we define a global constant.1417

And then, we are going to show, through three echo statements, that you can access all of these variables within the global scope.1423

One you can directly access, using globalInt; the other one--because it is a global variable,1431

it is maintained in the GLOBALS superglobal array, so you can access it this way, as well.1435

And because constants are available in all scopes, you will be able to output the constant variable.1441

If we go and look at scopeRecap, and load it, we can see at the beginning "global variable and constant access in the global scope."1447

And we can see that, in the global scope, we can access globalInt, and it is equal to 100.1458

We can access it by the GLOBALS array, and then, in the global scope, we also have access to the constant, because constants are declared.1463

Now, the other thing that we have done in this file is shown how scope is affected in include files.1471

And essentially, an include file is just considered a part of the PHP file it is included in.1477

So, any variables that are used in that are globally-scoped variables.1481

If we include this file called testInclude.php, which does the same echo statements we just did (it tries to echo the globalInt variable,1489

just directly accessing it, and tries to access it using the GLOBALS superglobal, and then tries to access it using the constant PI),1497

because it is included in line with that file, it has access to all of those global variables; it is not defined within a function,1505

and so, all of these should be able to output the correct value.1512

So, when we look at our file and output, we can see, in the include file, we have the same output as up here, globalInt=200.1516

We can access it by the GLOBALS array, and it equals the right value; and we can also access the constant PI.1523

The next sort of test we are going to do is trying to access global variables in a function where we don't use the global keyword.1533

We have defined a function in our testLIB called nonGlobalTest.1540

And what that says is: it tries to create a string that directly accesses this globalInt.1544

And we haven't used the global keyword within our function to define that variable, so globalInt, as far as the function is concerned, doesn't exist.1550

So, it is going to generate an error, and then we are just going to echo what the error message is.1557

And if we look at the page, we can see that global variable accessing nonGlobalTest...in that function, it generates an error1562

that says it's an undefined variable, globalInt.1568

So now, what we are going to do is define another function, called globalTest.1574

And what we are going to show is that you can access that global variable, as we had learned, if we declare it using the global keyword.1577

And so, once we have made this declaration here that globalInt refers to the global variable globalInt, we can directly use the variable.1585

Additionally, we are going to show that you can access the globalInt variable using the GLOBALS superarray,1594

and we are also going to show that, within a function, you can access constants, because constants have global scope.1602

In scopeRecap, if we look down and run globalTest, we can see that, in the function globalTest,1608

globalInt=100 when we prepend it with the global keyword, which means it is giving us access to the global variable.1618

We can access the variable using the GLOBALS superarray, and we can also see that the constant is available within the function.1627

We have also defined a function called localTest, which has a parameter that gets passed in, and it defines a local variable.1635

And in the function, it outputs the value of the parameter passed in, and it outputs the value of the local variable.1642

And this is going to show that, because localVar is defined within this function, and param is defined as part of the function's parameter list,1648

they are going to be available within that function, so these outputs should work.1656

So, in scopeRecap, when we call localTest with this string param value, we can see that, in localTest, localVar=local,1659

which is the value we had set it to within the function.1673

And we can see that param has the value 'param value,' which is passed in.1676

Now, just to show the other side of it, in the global scope, now, we are going to try to output1681

the variables that were defined in the function: the localVar variable,1690

and then also the param variable, which is defined as part of the function.1695

And you can see here, we have error suppression operators, because you are going to generate a warning, because those variables aren't available.1699

It is just going to output them, and it is going to say these variables don't exist within the scope.1705

And as you can see, it says "undefined variable localVar," "undefined variable param."1710

So, this is sort of an example that you can look at and see all of the different interactions--1714

how scope interacts in all sorts of different ways when using functions, when using constants, when using superglobals,1719

being able to access function variables outside of functions, being able to access variables within include files, and so forth.1726

It kind of sums everything up.1733

So, I'll just quickly mention this: it doesn't fall under the function of variable scope, but because we are talking about scope,1737

I want to mention that functions have a scope as well.1742

A function has a name, which is an identifier; and as we know with variables,1747

variable scope defines where that identifier has meaning--where you can use that identifier.1751

Well, functions in general have global scope, just like constants and superglobals; they are available everywhere.1756

So, you can call a function within the global part of your script, or you can call it within another function.1760

It also can be called within any include files that you include within your main file.1766

And the main thing about it is: because they have global scope, they never need to be defined with the keyword global.1776

For today's homework challenge, I want you to get a little practice with trying to understand this scope concept that we have introduced.1783

I would like you to create a script that defines a variable and a constant.1790

And when you define them in the main script, that means that those variables have global scope.1794

And then, I want you to go ahead and output them, to show that within the script, you have access to those variables.1800

Then, define a function that takes one parameter and also defines one local variable within its function body.1806

And then, what I want you to do is, within the function, also try to output the global variable that you defined in step 1,1815

without using the global keyword, and without using the GLOBALS array.1824

And what you should see is: you should get an error that you are not able to access that.1828

Then, go ahead and use both the global keyword and the GLOBALS superglobal to access that global variable from within the function,1833

to give you practice with using the global keyword and the superglobals array.1842

Also, try outputting the constant that you defined in your main script from within the function,1849

to show that constants have global scope, and they are available within the function, as well.1855

Then, because the function has a parameter and a locally defined variable,1861

I want you to output both the parameter and that locally defined variable from within the function.1864

That is going to show you that these function variables, including the parameter, have scope within the function.1870

And then, try outputting the function parameter and the variable that you created locally within the function outside the function,1875

after the function has been called within global scope.1882

And you will see that you should get an error, because those variables have local function scope and are not available in the global scope.1884

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

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.

Use this form or mail us to .

For support articles click here.