# PHP Tutorial for Beginners: Free 7-Hour Course

Learn the fundamentals of PHP in this free PHP course. Follow along to learn PHP and use it to write web apps.

This is a huge course—over 7 hours long, and it’s split into 39 lessons in total. You’ll find it’s a great resource to dip in and out of, and make sure you bookmark the bits you’re most interested in. Below you can find direct links to the different lessons of the course.

### Follow Along, Learn by Doing

I encourage you to follow along and to do exactly what I do on screen. This way you learn by doing.

To help, the PHP course GitHub repo contains the source for each exercise and sample project that was built throughout the course.

To follow along, you'll need a copy of MAMP (macOS) or XAMPP (for Windows and Linux). Download them here:

## What You Will Learn in This Free PHP Course

In this course, you'll learn the most important skills for writing apps for the web:

• variables and syntax
• how to make your applications more intelligent by making decisions from within your code
• arrays and looping over those arrays
• how to write your own functions
• how PHP treats the variables both inside and outside of those functions
• how to get and handle user input from both HTTP GET and POST requests
• parsing JSON

Later, you will learn how to build a web-based glossary application.

You will also learn:

• how to organize your project using controllers and FUSE
• how to read from and write to files
• how to build a simple authentication system
• how to use a MySQL database

## 1.What You Need

PHP is a server-side language. This means it runs on a server instead of in the browser. Secondly, PHP is used for server-side development. So the first thing you need to do is set up an environment for PHP development.

What does this mean? We first have to set up our computer to run as a web server. And this is how it will work: We make a request to a web server, the web server executes the PHP, and then it returns the resulting HTML.

In this section, you will learn what tools you need to set up your PHP environment. You will also learn by doing. So stop the video as many times as you want as you follow along and set up a PHP environment on your computer.

## 2. The PHP Programming Language

### Syntax and Variables

Watch video lesson [17:57] ↗

Every language has its own syntax. In this lesson, you'll learn the PHP basics, and I'll show you how to store data in memory by using PHP variables.

### Error Reporting

Watch video lesson [34:13] ↗

Error messages are important to developers—they tell us why and where something went wrong. By default, we won't see any PHP errors in the browser, so in this lesson we'll modify our PHP configuration to display error information in a PHP error log.

### PHP Conditions and Decisions

Watch video lesson [43:17] ↗

Almost every application you write will need to make decisions and respond to certain conditions. We'll look at PHP conditions and decisions in this part of our PHP tutorial.

Some things you'll be introduced to include:

• what is a condition in programming?
• conditional operators
• if and else statements

### PHP Arrays

Watch video lesson [1:00:20] ↗

Arrays are an integral part of any programming language. These are data structures that allow us to store multiple values within a single variable. In this lesson, we'll look at traditional PHP arrays as well as PHP associative arrays.

• what is an array?
• how to create an array
• associative arrays

### PHP Loops

Watch video lesson [1:14:34] ↗

In this lesson, we'll look at loops. Loops and arrays go hand in hand because loops allow us to loop over an array and output each item within that array. So if we wanted to easily build a list of my favorite items, we could do that very easily with a loop.

### PHP Functions

Watch video lesson [1:32:09] ↗

Functions are one of the most important parts of any programming language. They help us avoid code duplication by allowing us to run the same set of instructions over and over again on different data. In fact, throughout this entire course we have used functions in every lesson.

You'll learn:

• basic concepts of functions in PHP
• how to define your own functions in PHP
• returning values from a function and function parameters in PHP
• setting default argument values or passing an argument by reference

### Local and Global PHP Variables

Watch video lesson [1:41:24] ↗

We use variables to store data in memory. Simple, but there are some rules that you need to understand. We'll discuss those rules in this lesson, and we'll also look at a couple of different PHP variable types: PHP local variables and PHP global variables. Also, I'll explain default function parameters.

• scope
• what is a local variable
• what is a global variable

### PHP Include and PHP Require

Watch video lesson [1:57:07] ↗

Applications require a lot of code, and we need to organize our application into different files to keep things manageable. In this lesson, we'll look at how to use multiple files with PHP include and PHP require.

## 3. User Input and Saving Data in PHP

### PHP Get Requests

Watch video lesson [2:09:00] ↗

Web apps are different from traditional applications because users input data through HTTP requests. In this part of our PHP tutorial, I'll show you how to retrieve data from HTTP GET requests.

### PHP Post Requests

Watch video lesson [2:25:07] ↗

We use PHP POST requests to submit sensitive information or to change the state of our application. In this lesson, I'll show you how to use \$_POST to get data from a POST request.

PHP Sessions

We sometimes need to persist data throughout the lifespan of our application. Sessions make that possible, so we'll write a simple (but functional) authentication system using PHP sessions.

## 4. The Web Glossary Project

In the previous lessons, we've focused on individual parts of PHP so you can learn how it works. Now it's time to put that theory to practice. We'll get hands on and build a fun learning project: a glossary of web terminology.

### Separating PHP Logic From Presentation

Watch video lesson [2:55:44] ↗

A well-organized project is easy to develop. In this lesson, we'll learn the organization of a project. We'll focus on separating concerns. This is a concept that is not just used in PHP, or web development, but development in general. The idea is that you have different components within your application that are responsible for doing one thing, and one thing only.

### Working With Files

Watch video lesson [3:09:12] ↗

Sometimes you need to read and write to files on the server computer. In this lesson, I'll show you some of the functions we use to do that.

### Parse JSON and Output Data

Watch video lesson [3:23:29] ↗

JSON has become an integral part of any web application. Every language now has built-in JSON capability, including PHP.

In this lesson, you'll learn:

• how to change a string into JSON
• how you can work with JSON by parsing it into arrays and objects that we can then use in our application

Watch video lesson [3:38:26] ↗

Our web glossary is coming along. We're displaying a list of terms, but we need a page to display the details of individual terms. We want users to have the ability to click on a term and be taken to their definitions (for example). That's what we'll build in this lesson.

### Truthiness and Adding a PHP Search

Watch video lesson [3:50:38] ↗

Searching is a common feature many apps require, so in this lesson we'll implement a PHP search feature for our web glossary app. Along the way, I'll teach you about truthiness and falsiness in PHP.

### Managing PHP Paths

Watch video lesson [4:07:53] ↗

Paths, especially relative paths, can be hard to work with in PHP apps. In this lesson, I'll show you how to find the path to the root of your application. Along the way, you'll get comfortable working with PHP paths as well as PHP relative paths.

### Creating PHP Terms

Watch video lesson [4:18:20] ↗

We want to be able to manage and update the terms in our web glossary app. So in this lesson, you'll learn how to create new PHP terms and store them in the PHP term data file.

### Editing PHP Terms

Watch video lesson [4:32:45] ↗

Editing something is a lot like creating something... with some differences. In the previous lesson, you learned how to create PHP terms, and in this lesson, you'll learn how to edit PHP terms. We'll create the view and write the code for editing and saving data in our web glossary app.

### Deleting PHP Terms

Watch video lesson [4:32:45] ↗

Sometimes you just have to delete some data. In this lesson, I'll show you one of the ways we can handle deleting PHP terms and deleting data in our application.

## 5. Object-Oriented Programming

### Intro to PHP Classes

Watch video lesson [5:09:13] ↗

Classes are a way to organize our code and make it easier to understand. In this lesson, you will learn the basics of PHP classes. We'll start by creating an object.

### Creating a Data Provider Class

Watch video lesson [5:17:33] ↗

We can use classes to group and encapsulate related functionality. In this lesson, we'll convert our file functions into a FileDataProvider PHP class. So we'll reorganize our file code and make adjustments to our application to use the provider pattern in object-oriented programming.

### Writing a Data Abstraction Layer

Watch video lesson [5:27:22] ↗

In this lesson, we'll write a data abstraction layer (DAL) to sit between our application and our DataProvider. This will give us even more flexibility while protecting our data access code.

### Inheritance

Watch video lesson [5:38:49] ↗

Object-oriented programming is all about code reuse, and we can reuse functionality for similar classes with inheritance. You'll learn how in this lesson.

## 6. PHP and MySQL

### Intro to MySQL

Watch video lesson [5:50:54] ↗

When it comes to data storage, not much can match the speed and power of a database. In this lesson, I'll give you a brief overview of MySQL and phpMyAdmin. We'll also create our database.

### Connecting to the Database

Watch video lesson [6:00:30] ↗

In this lesson, you'll learn how to connect to a database with PDO, and we'll start writing our MySqlDataProvider class. We'll talk about creating and reading data.

By the end of this lesson, you will understand how you use a database and more importantly how you do four things with a database: create, read, update, and delete—CRUD for short.

### Inserting Data

Watch video lesson [6:07:00] ↗

We need some data to work with. We can easily create sample data with phpMyAdmin, but it's more fun if we write the code to insert data into the database.

### Reading Data With SELECT

Now that we have data in the database, we need to read it so that we can display it in the browser. You'll learn the basic SELECT statement in this lesson.

We have learned how to use insert, select, update, and delete commands. You will now learn how to use them within PHP. You will learn PDO (PHP Data Objects) and how to use PDO to issue queries in order to start getting data from the database.

### Using Prepared Statements

Watch video lesson [6:24:04] ↗

We need to get in the habit of using prepared statements when mixing SQL with external data. It will protect us from opening a huge security hole for SQL injection attacks in our application. Use them. Always.

### Searching Data

Watch video lesson [6:30:56] ↗

Searching for information in a database is actually easy to do. It's not Google-level searching, but it's useful in most cases. I'll show you how in this lesson.

### Editing and Deleting Data

Watch video lesson [6:36:09] ↗

Some of the easiest things we can do with a database are editing and deleting records. You'll learn how to do this with the UPDATE and DELETE commands.

### Refactoring the Code

Watch video lesson [6:41:32] ↗

Database code is repetitive. In this lesson, we'll clean up the code so it's a little less repetitive.

## 7. New Features in PHP 8

### Using Named Arguments

Watch video lesson [6:51:27] ↗

PHP 8 offers a new feature that lets you add clarity and flexibility to your function calls. We'll look at named arguments in this lesson.

### Promoting Class Properties

Watch video lesson [6:58:23] ↗

The new property promotion feature in PHP 8 makes it easier to create and assign values to a class's properties. You'll learn how to use it in this lesson.

### Simplifying String Functions

Watch video lesson [7:02:50] ↗

It's taken 20+ years, but PHP 8 finally introduces simplified functions for testing strings and substrings. I may have an opinion or two on the subject...