Browse Courses
Start learning today, and be successful in your academic & professional career. Start Today!
Loading video...
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 Advanced PHP
  • Discussion

  • Study Guides

  • Download Lecture Slides

  • Table of Contents

  • Transcription

  • Related Services

Bookmark and Share
Lecture Comments (1)

0 answers

Post by Shachar A on December 18, 2013

how can I download phpDocumentor? I went to the site but it is compilicated , farther more , I have php 3.3 and I want to update, is there a simple way to do it?

Advanced Course Development Environment

  • This course will use the same local development environment setup as the 'Introduction to PHP' course at educator.com. Lecture #3 and lecture #28 in the introductory course contain the information on how to configure your development environment.
  • Course software download links:
  • The code for the course is divided into three directories: 'homework_solutions', 'lecture_examples, & 'web_app'.
  • The 'web_app' directory contains a file called 'changelog.html' that outlines all of the changes made to the Educator Store web application from version to version.
  • Documentation for each version of the web application will be generated using the phpDocumentor software package. The generated documentation for a particular version of the application can be found in the docs subdirectory of that version's main directory.
  • More information about using phpDocumentor can be found at the project's homepage at:
  • For previous Educator PHP students, the following updates were made to the final version of the introductory course's web application:
    • The lib directory was moved into the includes directory.
    • The images directory was moved back into each version’s directory.
    • The VERSION constant has been removed from ‘config.php’, and each web application version’s URIs are now dynamically generated in 'config.php'.

Advanced Course Development Environment

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.

Transcription: Advanced Course Development Environment

Hello again, and welcome back to Educator.com's Advanced PHP with MySQL course.0000

In today's lesson, we are going to be discussing the details of the advanced course's development environment.0005

Specifically, we are going to be going over what the setup of our development environment for this course is going to be.0013

And then, we are going to go over what directory structure the files we are going to be using in this course are going to follow--0019

for example, how the web application directories are going to be organized; 0027

how the lecture examples and homework solution directories are going to be organized.0032

We are also going to talk about some software written in PHP called PHP Documentor,0036

which is something that we are going to be using in this course to document 0042

all of the web application function files and class files that we are going to be developing.0046

And we are going to explain a little bit about what that is and what that documentation looks like.0052

We are also going to have a quick note for previous Educator.com PHP students who have taken the introductory course,0058

to just mention some slight changes that have been made to the Educator Store web application 0064

from the end of the introductory lesson and to the beginning of this advanced lesson.0070

And then, we are going to introduce our first homework challenge for this course.0074

And homework challenges (for those students new to Educator.com, are challenges that are provided at the end of many different lessons0078

to give you extra activity to work on, so that you can reinforce and learn some of the concepts that we went over in a particular lesson.0088

The development environment setup we are going to be using for this course is the same that we used in the Introduction to PHP course.0098

And that is comprised of a couple different pieces of software--specifically the Firefox web browser (that is the web browser0106

we are going to be using for our development).0113

We are also going to be using the XAMPP for Windows software distribution.0115

And for those of you new to Educator, the XAMPP software distribution is a software package that bundles PHP along with0120

the Apache web server, and makes the installation and configuration of those two easy.0128

And in addition, it also provides the MySQL database.0133

And because in this advanced course, we are going to be dealing with the MySQL database, 0136

we are going to take advantage of that piece of software that is added to the distribution, as well.0140

Additionally, we are going to be editing our text files and doing our code development in the PSPAD text editor for Windows.0145

If we go and look at our web browser, you can see that Mozilla is the maker of the Firefox web browser, 0153

so this is the page that you will go to to download the Firefox software.0162

And all of these links are available in the introductory lesson.0166

This website, called apachefriends.org, is the maker of the XAMPP for Windows software distribution.0172

And this website tells a little bit about the different versions of the software (for example, Apache, PHP, and MySQL)0178

that are included in the distribution we are going to be using.0184

And then, pspad.com is where you can download the text editor that we are going to be using.0187

Additionally, we are also going to be using the Firebug add-on to Firefox, which is a web development tool0195

that you can add on to Firefox to help you when working with web applications and diagnosing different problems.0203

And if I click on this (it's already installed) little bug down here at the bottom of the screen, you can see the Firebug add-on pop up.0209

We will be working with that in this course--specifically when we are learning about HTTP and how that works.0216

In lecture 3 of the introductory course, that contains all of the instructions 0228

for setting up the development environment we are going to be using in this course.0231

So, for those of you that are new to Educator.com, I encourage you to go check out lecture 3 to find out how to set up the environment.0234

It walks through all of the different steps to get things up and running.0241

And what that is going to allow you to do is to hopefully be able to mimic the things that we do here in the lectures on your own home computer.0246

Additionally, there is lecture 28, titled Sending Email using PHP, that is part of that introductory course.0254

And that also makes some configuration changes to the development environment that allow you to send email from your PHP code.0261

And we use that in our Educator Store web application.0270

As far as the course goes, the course examples (the web application, the lecture examples, 0278

and the homework solutions) are all going to be combined into a particular directory structure.0288

And when you go to the Advanced PHP course's website, you will be able to download a ZIP file0293

that contains all of the homework examples, lecture examples, and versions of the web application.0298

What I am going to do now is just go over the structure of that ZIP file and how these files are going to be structured0305

within our web tree, or the document root of our Apache server.0313

The first thing is: we are going to be creating a file called advanced_php in the document root of Apache.0317

If we go to that, I have already gone in and unzipped this file that you are going to be able to get on the website.0325

And if you look in XAMPP, if you go to the XAMPP installation directory, there is an htdocs folder,0332

which is the document root of the Apache web server, bundled with XAMPP.0342

And we have an advanced_php folder.0346

Now, within that folder, there are going to be three different folders: one that is homework_solutions,0349

which has a folder for each lecture that has a homework challenge and provides a solution for it.0354

There is also a lecture_examples folder, which provides copies of all the examples that we run as we go through the lectures in the course.0361

And probably most interesting is the web_app folder: and what that does is contains all of the different versions of the Educator Store0371

web application that we are going to be developing and building on as we go throughout this advanced course.0377

For each version of the web app, there will be a separate folder that is going to contain all of the files for that particular version of the web application.0383

Here, you can see, we have version 0.0; and what that is: that is the baseline web app that we are going to start from.0390

Because we had already been developing this web app in the introductory course, we are going to baseline the app with version 0.0.0397

We are going to say, "This is where we are going to start from, and this is the version that we are going to add onto as we add new concepts in this course."0404

Additionally, there is also going to be a file called change_log.html within this web app folder.0413

What that is going to do is be an HTML file you can view in your browser that is going to allow you to see all of the different changes0419

that were made when going from one version to the next.0426

So, it will help you when looking at the different versions of the web app.0429

Rather than just looking at the source code to see the changes, you will be able to go to change_log.html and see any specific changes that were made.0433

As mentioned, what we are going to be using for this course, or at least the code that we are going to be including in the ZIP file0446

that you can download for this course, is going to be documented using a tool known as PHP Documentor.0453

And what it is: it is a tool that is used to automatically generate code documentation.0460

The way it works is: it parses source code files and looks for particular things known as tags and formatting structures that you add as a programmer.0465

And then, from those, you can generate documentation.0475

And if you take a look at, for example, outputLIB.php, which is our output function library,0479

and we look at the outputHtmlTag function, we can see that the documentation for this particular function has some strange tags in it.0487

And what they are, are ways to describe to the PHP Documentor tool information about the particular function.0499

For example, the @param tag is used to describe to the PHP Documentor all of the different parameters that a particular function takes.0506

The @return tag is used to describe the data type of the return value and what the return value represents.0516

There are a bunch of different other tags that we can use.0526

For example, here, this is an in-line source tag, which outputs in the documentation all of the source code for a particular function.0529

What happens is: PHP Documentor goes through and parses over all of these source code files and generates documentation.0539

Now, for this course, we are not going to be teaching how to use the PHP Documentor software.0549

But it is an extremely useful tool for generating documentation, and it is going to make it easier for me to explain0556

the different concepts that we will be learning throughout the course, and to look at the different source code,0563

because it formats source code in a nice, pretty format, and it is going to make it easier to describe things.0567

It is something that Educator will be doing on the back end; and with each version of the web application that we create,0574

and that we are going to include in the ZIP file you can download, there is going to be documentation generated for that particular version.0583

And it is going to be contained in the docs folder for each version of the web application folder.0590

For example, if we go to the advanced_php folder, and go to the web app directory, and we look at (for example) version 0.0,0598

we will see that there is a docs folder.0606

And it has an index.html file, which you can browse to, that is going to show documentation for all of the different functions,0608

and when we learn about objects and classes, all of the classes that are used in that particular version of the web application.0615

If we go...I'm going to go and show you what the documentation looks like.0622

For example, if we go to version 0.0 (and this is just browsing to this file in our web browser), and we go to docs, it automatically loads index.html.0628

And what you can see is: it has a rather nicely-formatted website, and it provides information 0639

about all the functions that we use in this version 0.0 of the web app.0646

For example, you can categorize the functions into different groups.0652

For example, I have categorized all of the output functions that are contained in outputLIB.php into an output category.0656

And it lists here all of the different functions that are defined in this outputLIB.php.0663

So, for example, if we click on the link outputHtmlTag, we can see the documentation that PHP Documentor has created for this particular function.0669

And what it did was: it went through and parsed this source code file that we have (and we talked about the different0680

tags that it looked for) and generates this documentation.0685

We can see, it has a statement about what the function does.0690

It returns a well-formed HTML tag, including any provided tag attributes and/or tag body.0693

It provides a little additional information that we can include to describe what the function does.0700

Here, we can see, it outputs the source code of that particular function.0705

And this is going to be useful to us, because when we are going over and explaining how the different versions of the web app work,0709

we are typically going to be using the documentation to look at the source code, because, as you can see,0715

it formats the code in a rather nice way; it does syntax highlighting, so that you can see things and make things clearer.0723

Additionally, it also has links to different functions.0732

For example, the one thing that the code automatically does is: if you use, for example, the is_string function0737

within one of your methods, you can click on it, and it will automatically link to that function's reference at php.net.0745

For example, if I click on is_string, it (and this is a little bit) goes to the php.net website and shows you the documentation for is_string.0752

And that is really quite a useful feature.0763

The other thing that it will allow you to do is (for example): down here, in the outputImg function,0766

when we look at the source code for it, we can see that it also calls the outputHtmlTag.0770

And if you will notice, outputHtmlTag is actually a link, and if we click on it, it goes and links to the outputHtmlTag's documentation.0777

So, it really is a convenient way to browse the documentation for different functions.0784

It enables you to figure out how the different functions work together, and how they are connected.0789

One other thing to note is that, if you want to look at the source code for a particular file...for example, if we want to look0796

at the source code for all of the output functions in outputLIB.php, if we click on outputLIB.php, it brings us to this page.0802

We can click on the link on the top that says Source Code for this File, and what it does is contains all of the source code that is contained in that file.0812

And this, again, shows it formatted in a nice way.0820

You can see here the different PHP Documentor tags, but you can also see all of the code that you have written.0823

We are going to be using that to look through the code as we work throughout the course.0829

If you want to find out more information about using PHP Documentor, and if you want to use that in your own code0834

(and I highly recommend it--it is a very useful tool), you can find information about that at phpdoc.org.0839

And one of the ways you can learn about how to use it is seeing the different tags that we used within our source code files for the course.0846

Now, I just wanted to briefly mention a couple of things for those students that are previous Educator PHP students that have taken the introductory course.0856

In addition to adding these PHP Documentor tags to all of our source code files, that allow us to create this documentation,0865

there have been a couple of other changes that have been made to the final version of that introductory web app.0874

A couple of things to note are that the LIB directory, where we contain our function libraries, has been moved to the Includes directory...0879

Before, LIB and Includes were two separate directories in the root directory of the web app version.0888

Now, the LIB directory is contained in the Includes directory.0894

Additionally, we have also moved the Images directory back into each version of the web app.0898

For example, each version of the web app...if we go to version 1.0, it has its own Images directory.0904

If we go to version 1.1, it has its own Images directory.0912

We had, in the introductory course, moved that out of that directory to demonstrate working with constants0918

and being able to change the location of an image directory and have your application still work.0924

But we did that to emphasize a point, but now we are going to use the Images directory in a more real-world application,0931

where it would actually be in the root directory of the web application.0937

Additionally, in our configuration file, config.php, we have gotten rid of the version constant.0941

And what we have done now is generated all of the URI's and paths that we use in our config file (for example) to load libraries and to load include files.0947

We are going to generate the URI's dynamically.0961

So, if we look at the old version of config.php, we can see we had a version constant.0964

And for each version of the web app, we would have to come in and update this version number.0971

And as you can see here, we used this constant to define the path to our particular version of the web application.0976

Now, what we have done is removed that constant and generated this root URI, which is the path we use to define (for example)0986

where our images are located in IMAGE_DIR, as well as where our Includes directory and our LIB directory are, and so forth.0998

We generate that dynamically, and we do that using the magic constant __FILE__, and then also using our SERVER ['DOCUMENT_ROOT'].1006

So, there is a little bit of code here at the beginning that will automatically generate that.1013

What that is going to do is: now, every time we update the version of the web application, we don't have to go and update that version constant anymore.1016

And finally, another thing that we have done is just updated some of the comments.1025

There were some comments that noted specific version numbers in the introductory course.1030

For example, there might be a comment that said, "This function was added in version 16.0."1034

Well, 16.0 is not relevant in this advanced course; it's version 16.0 in the introductory course.1038

So, we have gone ahead and removed those version numbers from our comments.1045

For the homework challenge for today, I would just like you to look through the web application source code1053

to make sure you understand how our web application is functioning.1058

You can go through version 0.0, play around with the code, and play around with the website to see how it works.1061

Additionally, I think it would be a good idea if you looked through the documentation that has been generated1069

by PHP Documentor for version 0.0, which is our baseline version for this course,1074

so you can get a feel for what the documentation looks like and how to use it, and how you can link, for example, from function to function:1081

how you can click on a link to go to the php.net website.1088

And it will just give you some experience, getting familiar with what that documentation looks like,1091

because we are going to be looking at that documentation a lot throughout the course.1095

Finally, for students that are new to Educator.com, I would like you to go ahead and (if you need to)1100

review lecture 3 and lecture 28 from the introductory course, to find out what you need to do 1106

to get your development environment set up on your computer, 1113

so that you can mimic the things that we do here in the lectures on your home computer.1116

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

I. Advanced PHP with MySQL
  Course Introduction 13:36
   Intro 0:00 
   Advanced PHP w/ MySQL 0:13 
    Course Introduction 0:14 
    Course Content 0:59 
   Web Application: Educator Store 1:45 
    Web Application: Educator Store 1:46 
   Object-Oriented Programming 6:09 
    Object-Oriented Programming Overview 6:10 
   MySQL 6:50 
    MySQL Overview 6:51 
    Example: Command Prompt & MySQL 8:34 
   What You Will Learn 9:34 
    What You Will Learn 9:35 
   Course Prerequisites 11:52 
    Course Prerequisites 11:53 
  Advanced Course Development Environment 18:46
   Intro 0:00 
   Lesson Overview 0:11 
    Lesson Overview 0:12 
   Development Environment Setup 1:36 
    Firefox Web Browser, XAMPP, and PSPad Text Editor 1:37 
   Course Directory Structure 4:36 
    Course Directory Structure 4:37 
   phpDocumentor 7:23 
    phpDocumentor Overview 7:24 
    Parsing Source Code 7:44 
    docs Subdirectory 9:06 
    Asvanced PHP Course Documentation Example 10:21 
   Previous Educator PHP Students 14:14 
    Lib Directory Changes 14:38 
    Images Directory Changes 14:57 
    VERSION Constant 15:40 
    Comments Noting a Specific Version Number 17:04 
   Homework Challenge 17:30 
    Homework Challenge 17:31 
  Introduction to File I/O 35:37
   Intro 0:00 
   Lesson Overview 0:10 
    Lesson Overview 0:11 
   File I/O 1:34 
    File I/O Overview 1:35 
    Performing file I/O: 3 Steps 1:52 
   File Permissions 2:28 
    Read Permission & Write Permission 2:29 
   fopen() 4:47 
    fopen() 4:48 
    Two Required Parameters 5:01 
    Successful fopen(): File Handle and Resource 5:21 
    FALSE and E_WARNING Error 6:00 
    Example 6:39 
   File Paths 7:10 
    File Paths 7:11 
   File Access Modes 9:18 
    File Access Modes 9:19 
   Coding Example: fopen() 10:31 
    Using Relative and Absolute Path & Non-Existent File 10:32 
   File Pointers 15:55 
    File Pointers 15:56 
    Example File 16:11 
    Opening a File with fopen() Using 'r' as the Access Mode 16:22 
   fgets() 17:55 
    fgets() Overview 17:56 
    Coding Example: fgets() - Reading a Line at a Time 18:26 
   feof() 20:10 
    feof() Overview 20:09 
    Coding Example: feof() 20:50 
   fclose() 23:43 
    fclose() Overview 23:44 
    Coding Example: fclose() 25:02 
   Coding Example: Current Stock 26:10 
    Coding Example: Current Stock 26:11 
   trim () 31:39 
    trim () Overview and Example 31:40 
   Homework Challenge 33:35 
    Homework Challenge 33:36 
  Web Application Development 36:36
   Intro 0:00 
   Lesson Overview 0:16 
    Lesson Overview 0:17 
   Version 1.0 Changelog 0:31 
    catalog.php 0:32 
    Function Library: fileLIB.php 5:00 
   Version 1.1 Changelog 27:12 
    createItemDataArray() and createDeptDataArray() 27:13 
    outputSimpleItemLink() and outputSimpleDeptLink() 32:06 
  HTTP & the POST Method 34:36
   Intro 0:00 
   Lesson Overview 0:10 
    Lesson Overview 0:11 
   HTTP Model 1:28 
    HTTP Model 1:29 
    Client-Server Model 2 Steps Process 2:00 
   HTTP Messages 2:23 
    HTTP Messages 2:24 
   HTTP Requests 3:09 
    HTTP Requests 3:10 
    Example: HTTP Request Header 3:17 
    Coding Example: HTTP Requests 4:29 
   HTTP Responses 7:15 
    HTTP Responses 7:16 
    Example: HTTP Response (Header & Body) 8:00 
   header() 11:47 
    header() Overview 11:48 
    Coding Example: header 14:02 
    Coding Example: header() Error 14:52 
   GET Method 18:55 
    GET Method 18:56 
    Coding Example: GET Method 20:13 
   POST Method 21:09 
    POST Method 21:10 
    Coding Example: Sample Form Using the POST Method 23:50 
   Accessing POST Data in PHP 26:38 
    Accessing POST Data in PHP 26:39 
    Coding Example: Accessing POST Data via $_POST 28:15 
   GET vs. POST 29:54 
    GET vs. POST 29:55 
   Example: Accessing POST Data via $_POST 31:20 
    Example: Accessing POST Data via $_POST 31:21 
   Homework Challenge 33:00 
    Homework Challenge 33:01 
  Web Application Development 14:11
   Intro 0:00 
   Version 2.0 Changelog 0:09 
    Updating the Site's Current Form to Use the POST Method 0:10 
    Creating Admin Website 2:55 
    Dynamically Generated Department List 12:40 
  Writing to Files 17:38
   Intro 0:00 
   Lesson Overview 0:09 
    Lesson Overview 0:10 
   Review of File I/O 0:40 
    Review of File I/O 0:41 
   fwrite() 1:38 
    fwrite() 1:39 
    fputs() 2:20 
     'r+' 2:31 
    Coding Example: fwrite() 2:59 
   fopen() Access Modes 8:41 
     'a' and 'a+' 8:42 
     'w' and 'w+' 11:34 
   Homework Challenge 14:47 
    Homework Challenge 14:48 
  Web Application Development 28:14
   Intro 0:00 
   Lesson Overview 0:08 
    Lesson Overview 0:09 
   Updated Open File Functions 0:19 
    openItemsDataFile ( ), openDeptsDataFile ( ), and openLastAddedFile ( ) 0:20 
   insertItem() 6:25 
    insertItem() Overview 6:26 
    Functions: createItemDataString ( ) and updateLastItemAdded ( ) 7:07 
   addItemToDepartment () 16:03 
    addItemToDepartment () Overview 16:04 
    Functions: createDeptDataString ( ) and updateDepartment ( ) 17:55 
  HTTP POST: File Uploads 22:51
   Intro 0:00 
   Lesson Overview 0:10 
    Lesson Overview 0:11 
   POST Data Encoding 1:13 
    POST Data Encoding 1:14 
    When Data is Included in the Body of the HTTP POST Request and is of the Content Type 1:31 
    When Uploading Files Using HTTP POST 3:17 
   Uploading Files 6:22 
    Uploading Files 6:23 
    If Encoding Type is Not Set to Multipart/Formdata 9:27 
   $_FILES Superglobal 10:59 
    $_FILES Superglobal 11:00 
   Structure of $_FILES 12:15 
    Structure of $_FILES: Name, Type, tmp_name, Error, and Size 12:16 
    Coding Example: $_FILES Superglobal 13:34 
   Moving an Uploaded File 15:39 
    Introduction to Moving an Uploaded File 15:40 
    move_uploaded_file ( ): Definition and Example 16:40 
   Homework Challenge 21:19 
    Homework Challenge 21:20 
  Web Application Development 15:30
   Intro 0:00 
   Lesson Overview 0:09 
    Lesson Overview 0:10 
   Uploading Item Image File 1:22 
    Uploading Item Image File 1:23 
   Uploading Item Image File (cont.) 2:43 
    Altering insertItem ( ) 2:44 
    Helpfer Functions: getFileExtension ( ) and moveUploadedFile ( ) 4:30 
    isValidItem ( ) 13:03 
  Introduction to Object-Oriented Programming 32:44
   Intro 0:00 
   Lesson Overview 0:11 
    Lesson Overview 0:12 
   Object-Oriented Programming 0:56 
    Introduction to Object-Oriented Programming 0:57 
   Associative Arrays 5:27 
    Associative Arrays 5:28 
   Classes 7:27 
    Classes Overview 7:28 
   Defining Classes 8:24 
    Defining Classes 8:25 
    Declaring Class Properties 9:25 
    Coding Example: Classes 10:11 
   Objects 12:18 
    Objects Overview 12:19 
   Classes vs. Objects 12:49 
    Classes vs. Objects 12:50 
   Instantiating Classes 14:58 
    Instantiating Classes 14:59 
    Coding Example: Instantiate an Item Object 16:30 
   Object Properties 19:21 
    Access and Set an Object's Property 19:22 
    Coding Example: Set & Access the Properties of an Item Object 24:23 
   Homework Challenge 30:22 
    Homework Challenge 30:23 
  Web Application Development 17:47
   Intro 0:00 
   Lesson Overview 0:11 
    Lesson Overview 0:12 
   Version 5.0 Overview 0:50 
    Version 5.0 Overview and Examples 0:51 
   Outputting Object Properties 12:38 
    Outputting Object Properties 12:39 
   Array Object Properties 14:18 
    Access and Set Array Value 14:19 
  Object Methods 39:57
   Intro 0:00 
   Lesson Overview 0:12 
    Lesson Overview 0:13 
   Object Methods 0:52 
    Definition of Object Methods 0:53 
   Calling Object Methods 3:25 
    Calling Object Methods 3:26 
    Coding Example: Simple Object Methods 4:44 
    Object Methods and Return Values 7:02 
   $this Variable 10:06 
    $this Variable: Definition and Example 10:07 
   $this Variable (cont.) 15:51 
    $this Variable (cont.) 15:52 
   Getters & Setters 21:21 
    Getters & Setters Methods 21:22 
   Object Methods In Strings 25:46 
    Object Methods In Strings 25:47 
    Coding Example: Outputting Method Return Values in Strings 27:41 
   Using $this to Call Other Methods 28:49 
    Using $this to Call Other Methods 28:50 
   Homework Challenge 34:18 
    Homework Challenge: 1-3 34:19 
   Homework Challenge (cont.) 36:20 
    Homework Challenge: 4-6 36:21 
   Homework Challenge (cont.) 37:52 
    Homework Challenge: 7-10 37:53 
  Web Application Development 17:30
   Intro 0:00 
   Lesson Overview 0:11 
    Lesson Overview 0:12 
   Version 6.0 Overview 0:40 
    Version 6.0 Changes & Examples 0:41 
   Item Methods 0:53 
    Item Class Definition: getImageFilename() 0:54 
    Coding Example: getImageFilename() 1:58 
   Department Methods 7:33 
    addItem(), removeItem(), and isItemInDept() Method 7:34 
    addItemtToDepartment() & buildDeptObject() Functions 11:46 
    A Default Value Needed to Be Set for $items 16:26 
  Object Constructors 22:20
   Intro 0:00 
   Lesson Overview 0:11 
    Lesson Overview 0:12 
   Object Constructors 0:32 
    Introduction to Object Constructors 0:33 
    Coding Example: Object Constructors 1:43 
   Defining Constructors 3:26 
    Defining Constructors 3:27 
    Coding Example: Constructors with No Arguments 4:24 
   Constructor Arguments 8:09 
    Constructor Arguments 8:10 
    Coding Example: Constructor Arguments 9:49 
   Important Notes 16:13 
    Important Notes 16:14 
   Homework Challenge 17:35 
    Homework Challenge: 1 - 4 17:36 
   Homework Challenge (cont.) 19:13 
    Homework Challenge: 5 - 9 19:14 
   Homework Challenge (cont.) 21:40 
    Homework Challenge: 10 and 11 21:41 
  Web Application Development 16:19
   Intro 0:00 
   Lesson Overview 0:11 
    Lesson Overview 0:12 
   Version 7.0 Overview 0:39 
    Version 7.0 Overview 0:40 
   Item Constructor 2:19 
    Item Constructor 2:20 
   Department Constructor 7:47 
    Department Constructor 7:48 
   Customer Constructor 12:23 
    Customer Constructor 12:24 
  More Magic Methods 53:37
   Intro 0:00 
   Lesson Overview 0:13 
    Lesson Overview 0:14 
   Magic Methods 1:12 
    Magic Methods 1:13 
   Destructors 2:45 
    Destructors Overview 2:46 
    Coding Example: Calling Destructors 4:30 
    Coding Example: Object Destructor 9:19 
   _to String () 16:12 
    _to String () Overview 16:13 
    Coding Example: _to String () Magic Method 18:10 
   Access Modifiers 21:23 
    Introduction to Access Modifiers 21:24 
    Access Modifiers: Public 21:39 
    Access Modifiers: Private 22:18 
    Access Modifiers: Protected 22:41 
    Object Properties and Methods 23:06 
    Coding Example: Public Access Modifiers 26:48 
    Coding Example: Private Access Modifiers 28:30 
   _get() 31:37 
    _get() Overview 31:38 
    Coding Example: _get () Magic Method 33:30 
   _set () 36:23 
    _set () & the Magic Method 36:24 
   Using Getters & Setters 44:37 
    Coding Example: Using Getters & Setters 44:38 
   Homework Challenge 50:33 
    Homework Challenge: 1 - 6 50:34 
   Homework Challenge (cont.) 51:41 
    Homework Challenge: 7 - 12 51:42 
  Web Application Development 31:12
   Intro 0:00 
   Version 8.0 Review 0:12 
    Version 8.0 Review 0:13 
   private Object Properties 1:15 
    private Object Properties 1:16 
    Coding Example 2:54 
   _toString() Methods 6:51 
    _toString() Methods 6:52 
    Coding Example 8:09 
   DataFile Class 13:27 
    DataFile Class & I/O Operations 13:28 
    Using DataFile Class: Instantiate a DataFile, DataFile open () Method, and DataFile close () Method 18:09 
   Homework Challenge 29:35 
    Homework Challenge 29:36 
  Classes vs. Objects 37:49
   Intro 0:00 
   Lesson Overview 0:09 
    Lesson Overview 0:10 
   Class vs. Object Review 0:58 
    Class vs. Object Review 0:59 
   Static Properties 2:42 
    Static Properties 2:43 
   Scope Resolution Operator (::) 5:26 
    Scope Resolution Operator (::) & Static Property 5:27 
    Coding Example: Accessing a Static Property Using the Scope Resolution Operator 7:57 
    Coding Example: Accessing a Static Property in a Class Definition 10:33 
    Coding Example: Using a Static Property as an Instance Counter 14:18 
   Static Methods 18:51 
    Static Methods Overview 18:52 
    Coding Example: Static Methods 21:39 
   Classes vs. Objects 26:28 
    Classes vs. Objects: Diagrams 26:29 
   Class Constants 30:24 
    Class Constants Definition 30:25 
    Coding Example: Using Class Constants 31:55 
   Homework Challenge 34:01 
    Homework Challenge: 1 - 5 34:02 
   Homework Challenge (cont.) 35:25 
    Homework Challenge: 6 - 10 35:26 
  Web Application Development 21:07
   Intro 0:00 
   Version 9.0 Overview 0:12 
    Version 9.0 Changes & Examples 0:13 
   Output Class 1:08 
    Output Class & Static Methods 1:09 
    outputHtmlSelector ( ) Method 2:43 
    outputItemSelector ( ) Method 4:53 
    outputDeptSelector ( ) Method 6:42 
   buildObject() Methods 11:54 
    buildObject() Methods & Examples 11:55 
  Exceptions 22:43
   Intro 0:00 
   Lesson Overview 0:12 
    Lesson Overview 0:13 
   try Blocks 0:44 
    try Blocks Definition 0:45 
   catch Blocks 2:03 
    catch Blocks: Definition and Syntax 2:04 
    Coding Example: try/catch Blocks 3:48 
    When an Exception Object is Caught & Error Handling 5:59 
   Exception Class 7:02 
    Exception Class 7:03 
    Coding Example: Using try/catch to Catch an Exception Thrown from a Method 8:04 
   Re-Throwing Exceptions 16:39 
    Re-Throwing Exceptions 16:40 
    Coding Example: Re-throwing an Exception 17:21 
   Homework Challenge 20:40 
    Homework Challenge: 1 - 5 20:41 
   Homework Challenge (cont.) 22:17 
    Homework Challenge: 6 22:18 
  Web Application Development 22:00
   Intro 0:00 
   Version 10.0 Overview 0:11 
    Updating addItem.php, addItemToDept.php, and error.php 0:12 
    Updating DataFile Class: open ( ) Method & try/catch blocks 7:45 
   Version 10.1 Overview 13:37 
    Version 10.1 Changes & Examples 13:38 
    Updating DataFile Class: close ( ) Method & logWarning ( ) 20:17 
  Cookies 39:47
   Intro 0:00 
   Lesson Overview 0:09 
    Lesson Overview 0:10 
   What is a Cookie? 1:15 
    Definition of Cookie 1:16 
   HTTP - A Stateless Protocol 2:17 
    HTTP - A Stateless Protocol 2:18 
    Purpose of Cookies 4:10 
   Set - Cookie Header 6:21 
    Introduction to Set - Cookie Header 6:22 
    Coding Example: Set - Cookie Header 7:38 
   Cookie Header 9:45 
    Introduction to Cookie Header 9:46 
    Example: Cookie Header 10:27 
   setcookie() 12:33 
    Introduction to setcookie() 12:34 
    Example: Using setcookie 13:54 
   Cookies Attributes 15:48 
    Cookies Attributes Overview 15:49 
    Common Cookies Attributes: Domain 16:24 
    Common Cookies Attributes: Path 17:04 
    Common Cookies Attributes: Expires 19:34 
    Coding Example: Setting Cookie Attributes 20:58 
   $_COOKIE Superglobal 27:03 
    $_COOKIE Superglobal 27:04 
    Coding Example: Accessing Cookies from PHP Using $_COOKIE 29:45 
   Security Implications 34:44 
    Security Implications 34:45 
   Homework Challenge 36:10 
    Homework Challenge: 1 - 4 36:11 
   Homework Challenge (cont.) 37:47 
    Homework Challenge: 5 - 7 37:48 
  Web Application Development 39:11
   Intro 0:00 
   Lesson Overview 0:17 
    Lesson Overview 0:18 
   instanceof Operator 1:34 
    instanceof Operator 1:35 
   Objects with Object Properties 2:53 
    Objects with Object Properties 2:54 
   Version 11.0 Overview 6:41 
    Version 11.0 Changes: Cart and CartItem Classes 6:42 
    Version 11.0 Coding Example 10:40 
   Version 11.1 Overview 31:03 
    Version 11.1 Changes & Examples 31:04 
  Introduction to Sessions 46:08
   Intro 0:00 
   Lesson Overview 0:08 
    Lesson Overview 0:09 
   What is a Session? 0:53 
    What is a Session? 0:54 
   Client-Side Sessions 3:51 
    Client-Side Sessions 3:52 
   Server-Side Sessions 5:04 
    Server-Side Sessions 5:05 
   Session IDs 6:26 
    Session IDs 6:27 
    The SID is Used by the Server to: 7:08 
    A Client Passes an SID to the Server with Each HTTP Request Via: 8:15 
   Sessions in PHP 12:19 
    Sessions in PHP 12:20 
   session_start() 14:40 
    session_start() Overview 14:41 
    Coding Example: Using session_start () to Continue a Session 18:03 
   $_SESSION Superglobal 22:06 
    $_SESSION Superglobal Overview 22:07 
    Coding Example: Setting a Session Variable via $_SESSION 25:22 
   Accessing Session Data 28:08 
    Accessing Session Data 28:09 
   Deleting Session Data 31:43 
    Deleting Session Data 31:44 
    Coding Example: Deleting Session Data 32:16 
   Configuring PHP Sessions 36:14 
    session.cookie_lifetime, session.cookie_domain, and session.cookie_path 36:15 
    Coding Example: Configuring PHP Sessions 37:28 
   Configuring PHP Sessions (cont.) 40:56 
    session.use_cookies, session.use_trans_sid, and session.use_only_cookies 40:57 
    Coding Example: Configuring PHP Sessions 42:25 
   Homework Challenge 42:55 
    Homework Challenge: 1 - 5 42:56 
   Homework Challenge (cont.) 44:10 
    Homework Challenge: 6 - 10 44:11 
   Homework Challenge (cont.) 45:27 
    Homework Challenge: 11 - 13 45:28 
  Web Application Development 11:00
   Intro 0:00 
   Version 12.0 Overview 0:12 
    Version 12.0 Changes Part I: Updating 'viewCart.php' & 'checkout.php' 0:13 
    Version 12.0 Changes Part II 5:03 
  Destroying Sessions 29:59
   Intro 0:00 
   Lesson Overview 0:12 
    Lesson Overview 0:13 
   Destroying Sessions 1:02 
    Destroying Sessions 1:03 
   session_destroy() 2:10 
    session_destroy() Overview 2:11 
    Coding Example: Setting a Session Variable and Destroying a Session 3:18 
   Deleting Session Cookies 8:38 
    Deleting Session Cookies 8:39 
    Coding example: Deleting Session Cookies 9:17 
   Review of Steps 21:07 
    Review of Steps 21:08 
   Garbage Collection 21:50 
    Garbage Collection Overview 21:51 
    Coding Example: Garbage Collection 24:30 
   Homework Challenge 26:28 
    Homework Challenge: 1 - 4 26:29 
   Homework Challenge (cont.) 28:16 
    Homework Challenge: 5 - 9 28:17 
  Web Application Development 19:14
   Intro 0:00 
   Lesson Overview 0:13 
    Lesson Overview 0:14 
   _autoload() 0:46 
    Introduction to _autoload () 0:47 
   Version 13.0 Overview 4:06 
    _autoload () and SessionManager Class 4:07 
    Updating 'viewCart.php' & 'checkout.php' 11:16 
  Introduction to Databases 21:24
   Intro 0:00 
   Lesson Overview 0:16 
    Lesson Overview 0:17 
   Flat Files 1:09 
    Flat Files: Definition and Example 1:10 
    Problems Associated with Using Flat Files as a Database 2:15 
   Relational Databases 3:29 
    Relational Databases 3:30 
    Relational Database Management System (RDBMS) 3:50 
   Tables 7:43 
    Tables 7:44 
   Columns 9:24 
    Columns 9:25 
   What is SQL? 10:45 
    Introduction to Structured Query Language 10:46 
    Standard Data Types of SQL 12:23 
   Primary Keys 13:19 
    Primary Keys 13:20 
   Primary Key Examples 16:36 
    Primary Key Examples 16:37 
  Introduction to MySQL 28:11
   Intro 0:00 
   Lesson Overview 0:11 
    Lesson Overview 0:12 
   What is MySQL? 1:33 
    MySQL 1:34 
   MySQL Monitor 5:16 
    MySQL Monitor Overview 5:17 
    XAMPP & MySQL 5:58 
    In the MySQL Command: hostname, username and -p 7:05 
   Connecting to a MySQl Server 9:52 
    Connecting to a MySQl Server 9:53 
   Using MySQl Monitor 13:48 
    Using MySQl Monitor 13:49 
   GRANT Command 15:10 
    GRANT SQL Command 15:11 
    Privileges & Objects 18:18 
    Username, Hostname, and Password 19:37 
    Specifying Objects 20:05 
   Creating a PHP User Account 21:41 
    Creating a PHP User Account Overview 21:42 
    Meaning of all & *.* 23:35 
    Example: Creating a PHP User Account 23:48 
   Required Homework 26:27 
    Required Homework: 1 - 5 26:28 
   Required Homework (cont.) 27:28 
    Required Homework: 6 27:29 
  Creating Databases & Tables 23:01
   Intro 0:00 
   Lesson Overview 0:08 
    Lesson Overview 0:09 
   Creating a Database 1:40 
    Introduction to Creating a Database 1:41 
    Example: Creating a Database 3:33 
   CREATE TABLE Command 6:43 
    CREATE TABLE Command 6:44 
   Data Types 7:39 
    Numeric Data Types: INT, INT UNSIGNED, and DECIMAL 7:40 
    String Data Types: CHAR (M), VARCHAR (M), and TEXT 9:23 
   Colum Attributes 11:00 
    PRIMARY KEY Attribute 11:01 
    AUTO INCREMENT Attribute 11:35 
   Items Table 13:07 
    Items Table 13:08 
   Useful Commands 17:04 
    SHOW TABLES Command & DESCRIBE Utility Statement 17:05 
    Example: Creating an Items Table 17:58 
   Required Homework 20:51 
    Required Homework: 1 - 6 20:52 
   Required Homework (cont.) 21:55 
    Required Homework: 7 - 9 21:56 
  SQL Command: INSERT 27:11
   Intro 0:00 
   Lesson Overview 0:11 
    Lesson Overview 0:12 
   INSERT Command 1:20 
    SQL INSERT Command 1:21 
   Specifying Values 3:16 
    Columns with Numeric Data Types 3:17 
    Columns with String Data Types 3:34 
    Columns with AUTO INCREMENT 4:07 
   Inserting Items 5:21 
    Inserting Items 5:22 
    Example: Inserting Items 7:03 
   SQL Text Files 14:04 
    SQL Monitor Client 14:05 
    MySQL Monitor & the < Operator 15:15 
    Example 17:35 
   Required Homework 22:32 
    Required Homework: 1 - 6 22:33 
   Required Homework (cont.) 24:19 
    Required Homework: 7 - 10 24:20 
  SQL Command: SELECT 24:57
   Intro 0:00 
   Lesson Overview 0:10 
    Lesson Overview 0:11 
   SELECT Command 0:42 
    SELECT Command: Definition and Syntax 0:43 
    Results of a SELECT Query 1:53 
    To Specify the Retrieval of All Columns from a Table 3:06 
    Example: SELECT Command 4:18 
   WHERE Clause 7:11 
    WHERE Clause 7:12 
    A SELECT Query with WHERE Clause has the Following Syntax 8:10 
    A Where Condition can Contain both Logical and Comparison Operators 9:44 
   Literal Values 13:24 
    Literal Values 13:25 
    Example: Literal Values 14:18 
   ORDER BY Clause 15:31 
    ORDER BY Clause & SELECT Query 15:32 
    Ascending and Descending Order 17:30 
    An ORDER BY Clause can Specify Multiple Columns to Order the Rows by 18:01 
    Example: SELECT Query with WHERE and ORDER BY Clause 20:32 
   Homework Challenge 21:59 
    Homework Challenge 22:00 
   Homework Challenge (cont.) 23:54 
    Homework Challenge 23:55 
  Using PHP from MySQL 32:43
   Intro 0:00 
   Lesson Overview 0:10 
    Lesson Overview 0:11 
   PHP/MySQL Architecture 0:56 
    PHP/MySQL Architecture 0:57 
   MySQLi Extension 3:05 
    MySQLi Extension 3:06 
   Steps to Using MySQL from PHP 5:53 
    Four Steps to Using MySQL from PHP 5:54 
    Step # 3 7:18 
   Connecting to a Database 8:12 
    To Connect to a MySQL Database 8:13 
    To Test for Connection Errors 10:20 
   Running an SQL Statement 11:54 
    Running an SQL Statement 11:55 
    Example 13:30 
   Processing the Results 15:58 
    For non-SELECT Queries 15:59 
    MySQLi Object Property: affected_rows 16:19 
    For INSERT Statements on Tables with an AUTO_INCREMENT Column 18:07 
   Closing the Connection 19:45 
    Closing the Connection 19:46 
   Coding Example 21:24 
    Coding Example: Using MySQL from PHP 21:25 
   Homework Challenge 29:00 
    Homework Challenge: 1 - 4 29:01 
   Homework Challenge (cont.) 31:10 
    Homework Challenge: 5 - 9 31:11 
  Web Application Development 30:30
   Intro 0:00 
   Lesson Overview 0:14 
    Lesson Overview 0:15 
   sprintf() 1:28 
    sprintf() Overview 1:29 
    Example 1:56 
   INSERT Statements with sprintf() 5:15 
    INSERT Statements with sprintf() 5:16 
   Version 14.0 Overview 10:00 
    Version 14.0 Changes & Examples Part 1 10:01 
    Version 14.0 Changes & Examples Part 2 21:58 
  SELECT QUERIES from PHP 24:22
   Intro 0:00 
   Lesson Overview 0:14 
    Lesson Overview 0:15 
   SELECT Queries 1:21 
    SELECT Queries 1:22 
   MySQLi_Result Class 3:17 
    MySQLi_Result Class: num_rows 3:18 
    MySQLi_Result Class: fetch_assoc ( ) and fetch_object ( ) 3:59 
   fetch_assoc() 5:17 
    fetch_assoc() Overview 5:18 
    Coding Example: Using fetch_assoc() 9:00 
   stdClass Objects 12:46 
    stdClass Objects 12:47 
   fetch_object() 14:19 
    fetch_object() Overview 14:20 
    Coding Example: Using fetch_object() 16:45 
   Freeing Result Set Memory 18:42 
    Freeing Result Set Memory 18:43 
    Coding Example: Using free ( ) 20:01 
   Homework Challenge 22:07 
    Homework Challenge: 1 - 5 22:08 
  Web Application Development 17:06
   Intro 0:00 
   Version 15.0 Overview 0:13 
    Version 15.0 Changes & Examples Part 1 0:14 
    Version 15.0 Changes & Examples Part 2 8:43 
  Linking Tables 24:32
   Intro 0:00 
   Lesson Overview 0:16 
    Lesson Overview 0:17 
   A Departments Table 1:08 
    Departments Table 1:09 
    How Could We Model This in a Table: Option 1 1:26 
    How Could We Model This in a Table: Option 2 3:12 
   Database Normalization 4:37 
    Database Normalization 4:38 
   Foreign Keys 8:47 
    Foreign Keys 8:48 
   Linking Table 11:26 
    Linking Table 11:27 
   Multiple Column Primary Keys 15:30 
    Multiple Column Primary Keys 15:31 
    Example 18:51 
   Required Homework 22:34 
    Required Homework: 1 - 3 22:35 
   Required Homework (cont.) 24:10 
    Required Homework: 4 24:11 
  Web Application Development 24:00
   Intro 0:00 
   Version 16.0 Overview 0:11 
    Version 16.0 Changes 0:12 
    Version 16.0 Coding Examples 4:12 
   Version 16.0 (cont.) 18:30 
    Version 16.0 Changes & Examples Part 2 18:31 
  SQL Command: DELETE 10:33
   Intro 0:00 
   Lesson Overview 0:12 
    Lesson Overview 0:13 
   DELETE Statement 0:30 
    DELETE Statement & Its WHERE Clause 0:31 
    Delete All Rows From a Table 2:57 
   Using DELETE from PHP 4:04 
    Using DELETE from PHP Overview 4:05 
    Coding Example: Using DELETE from PHP 6:37 
   Homework Challenge 8:53 
    Homework Challenge: 1 - 4 8:54 
  Web Application Development 16:02
   Intro 0:00 
   Version 17.0 Overview 0:11 
    Version 17.0 Changes 0:12 
    Version 17.0 Coding Example 2:51 
   Transactions 12:50 
    Database Transaction 12:51 
    Steps in Using Transactions 14:00 
  SQL Command: UPDATE 32:14
   Intro 0:00 
   Lesson Overview 0:10 
    Lesson Overview 0:11 
   UPDATE Statement 0:54 
    UPDATE Statement & Its WHERE Clause 0:55 
    Example: UPDATE Statement 3:32 
   Using UPDATE from PHP 5:21 
    Using UPDATE from PHP Overview 5:22 
    Coding Example: Using UPDATE from PHP 6:53 
   htmlspecialchars() 9:04 
    htmlspecialchars() 9:05 
    Encoding Special Characters 9:23 
    Coding Example: htmlspecialchars() 13:41 
   addslashes() 20:40 
    addslashes() 20:41 
    Coding Example: addslashes() 22:52 
   Homework Challenge 27:55 
    Homework Challenge: 1 - 2 27:56 
   Homework Challenge (cont.) 30:14 
    Homework Challenge: 3 - 5 30:15 
   Homework Challenge (cont.) 30:41 
    Homework Challenge: 6 - 9 30:42 
  Web Application Development 12:33
   Intro 0:00 
   Version 18.0 Overview 0:12 
    Version 18.0 Changes 0:13 
    Version 18.0 Coding Example 1:24 
  SQL: Joins 42:16
   Intro 0:00 
   Lesson Overview 0:11 
    Lesson Overview 0:12 
   DATETIME Data Type 1:52 
    DATETIME Data Type 1:53 
   Modeling Orders 5:12 
    Modeling Orders 5:13 
   Customers Table 10:46 
    Customers Table 10:47 
   Example 16:18 
    Example: Order Table in MySQL 16:19 
   Joins 22:26 
    Joins Overview 22:27 
    Inner Join 23:09 
    Example: Joins 24:11 
   Join Conditions 28:14 
    Join Conditions 28:15 
    Example 28:32 
    Join Queries 30:00 
    Example: Join Conditions in MySQL 30:36 
   Implicit Joins 34:42 
    Implicit Joins 34:43 
    Example: Implicit Joins 35:57 
   Aliases 37:28 
    Introduction to Aliases 37:29 
    Example: Aliases 38:55 
   Required Homework 40:32 
    Problem 1 40:33 
    Problem 2 41:01 
    Problem 3 41:17 
  Web Application Development 29:34
   Intro 0:00 
   Lesson Overview 0:12 
    Lesson Overview 0:13 
   Inserting Orders 0:44 
    Inserting Orders 0:45 
   Version 19.0 Overview 3:45 
    Version 19.0 Changes & Example Part 1 3:46 
    Version 19.0 Changes & Example Part 2 13:18 
   Version 19.1 Overview 21:10 
    Version 19.1 Changes 21:11 
    Version 19.1 Coding Example 22:18 
  User Authentication 26:13
   Intro 0:00 
   Lesson Overview 0:10 
    Lesson Overview 0:11 
   User Authentication 1:31 
    User Authentication 1:32 
   Authentication with Sessions 2:34 
    Authentication with Sessions 2:35 
    Four Steps in Authentication via Sessions 2:50 
   Using Sessions to Restrict Access 3:58 
    Using Sessions to Restrict Access 3:59 
    Coding Example: Restricted Access Area 4:47 
   Authentication Methods 5:54 
    Authentication Methods Overview 5:55 
    Coding Example: Authentication Methods 7:31 
   Logging Out 9:57 
    Logging Out 9:58 
    Coding Example: Log Out 10:47 
   Users Table 13:50 
    Users Table 13:51 
    Example: Creating a Users Table 15:08 
   Password Hashing 17:30 
    Password Hashing 17:31 
    PHP and MySQL Built-in Hash Functions: sha1 ( ) and md5 ( ) 18:43 
    Coding Example: Password Hashing 19:27 
   Required Homework 24:41 
    Required Homework: 1 - 4 24:42 
  Web Application Development 14:36
   Intro 0:00 
   Version 20.0 Overview 0:13 
    Version 20.0 Changes & Examples Part 1 0:14 
    Version 20.0 Changes & Examples Part 2 5:05 
    Version 20.0 Changes & Examples Part 3 7:29 
   Version 20.0 (cont.) 8:31 
    Version 20.0 Changes & Examples Part 4 8:32