Learning Path: Functional Programming for PHP 7 Developers
5.0 (3 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
51 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Learning Path: Functional Programming for PHP 7 Developers to your Wishlist.

Add to Wishlist

Learning Path: Functional Programming for PHP 7 Developers

Enhance your PHP 7 development skills by learning advanced PHP techniques and most importantly functional programming.
5.0 (3 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
51 students enrolled
Created by Packt Publishing
Last updated 4/2017
Current price: $10 Original price: $200 Discount: 95% off
5 hours left at this price!
30-Day Money-Back Guarantee
  • 9 hours on-demand video
  • 1 Supplemental Resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Use advanced PHP 7 features such as the Abstract Syntax Tree and Anonymous Classes
  • Discover when and where to modify PHP 5 to avoid backwards-compatibility breaks
  • Debug your code and get to know the best practices
  • Find out about PHP7’s internal closure object to write very powerful higher-order functions
  • Explore the benefits of writing functionally versus other paradigms
  • See function evaluation strategies in-depth and simulate a lazy invocation
  • Get an exposure to a completely functional PHP library called PRamda
View Curriculum
  • A core understanding of PHP 7

Do you wish to advance your PHP development skills? Do you want to get equipped with the tools and skills required to deliver efficient applications for your websites and enterprises?

PHP 7 offers new features and tools to write optimized code. Functional programming is one such tool. If you’re a PHP developer looking at enhancing your skills by working on over 80 real-world tasks and learning functioning programming, this Learning Path is for you.

Packt’s Video Learning Paths are a series of individual video products put together in a logical and stepwise manner such that each video builds on the skills learned in the video before it.

This Learning Path will start by demonstrating intermediate to advanced PHP techniques. You’ll learn to solve practical, real-world problems faced by PHP developers like yourself every day. You’ll learn new ways of writing PHP code made possible only in version 7. In addition, we discuss backward-compatibility breaks and give you plenty of guidance on when and where PHP 5 code needs to be changed to produce the correct results when running under PHP 7. This course also incorporates the latest PHP 7.x features.

You’ll learn PHP7’s internal closure object, enabling you to write very powerful functions. This Learning Path provides helpful techniques and insights such as lazy function evaluation and currying that facilitate composing functions together.

Finally, you’ll be skilled enough to think about coding problems in terms of the composition of pure functions.

The goal of this course to equip you to perform efficient coding in PHP 7.

This Learning Path is authored by one of the best in the fields.

Doug Bierer Doug Bierer has been hooked on computers since his first program, written in Dartmouth BASIC on a DEC PDP-8, in 1971. In his wide-ranging career, this author has been a professional contract programmer since 1978, having written applications in BASIC, PL/I, assembler, FORTH, C, C++, dBase/FoxBase/Clipper, Pascal, Perl, Java, and PHP. He deployed his first website in 1993 while living in San Francisco. He speaks four languages, has traveled extensively, and has lived in the USA, France, the Netherlands, England, Sweden, Scotland, and Thailand. He also spent some years doing Linux system administration and TCP/IP networking. He is also an accomplished musician (he has written over 60 songs) as well as a writer, under the pen name of Douglas Alan. Doug's own company is, which specializes in consulting, PHP programming, website development, and training (primarily for Zend Technologies Ltd and Rogue Wave Software Inc. Some of his technical works for O'Reilly Media are Learning PHP and MySQL, Learning PHP Security, Learning MongoDB, and Learning Doctrine.

Luis Atencio

Luis Atencio is a Staff Software Engineer for Citrix Systems in Ft. Lauderdale, FL. He has a BSc and an MSc in Computer Science and now works full time developing and architecting web applications using PHP, JavaScript, and Java platforms. Luis is also very involved in the community and has presented on several occasions at conferences and local meet-ups. When he is not coding, Luis writes magazine articles for PHPArch and DZone. Luis is also the author of Functional Programming in JavaScript,Manning 2016, RxJS in Action, Manning 2016, and Functional PHP.

Who is the target audience?
  • PHP developers looking at enhancing their programming skills have this Video Learning Path for their learning
  • The Learning Path starts by taking a task-based approach, with real-world examples that can serve as building blocks for a larger application. Each task is self-contained with no external dependencies. Then, it moves on with an easy-to-follow, from theoretical to practical, approach to bring your applications up to a functional way of thinking. Each step in the course is self-contained.
Compare to Other Functional Programming Courses
Curriculum For This Course
88 Lectures
PHP 7 Programming Solutions
69 Lectures 06:36:49

This video will show us the different ways in which we can install PHP7.

Preview 03:45

This video will show how to use the built-in PHP 7 web server and also help us define a MySQL database and install PHPUnit.

Using PHP Server, Defining MYSQL, and Installing PHPUnit

This video will get you acquainted with the mechanism built into the PHP language that will implement class autoloading.

Implementing Class Autoloading

Very frequently, scanning a website and extracting information from specific tags is of interest. This video will help us to do that.

Hoovering a Website

Sometimes you need to scan a website, but go one level deeper.We will see that in this video.

Building a Deep Web Scanner

This video is developed to avoid errors caused while running PHP5 code on PHP 7.

Creating a PHP 5 to PHP 7 Code Converter

This video will show us what an abstract syntax tree is.

Preview 05:41

In this video, we will check out the differences in parsing between PHP 5 and PHP 7.

Understanding Differences in Parsing

In this video, we will look at some behavioral differences of code inside a foreach() loop between PHP 5 and PHP 7.

Understanding Differences in foreach() Handling

This video will help you learn the new enhancements in PHP 7 which will help us improve the performance as compared to PHP 5

Improving Performance Using PHP 7 Enhancements

Owing to memory limitations, few functions quickly cause problems when dealing with massive files. This video will help us iterate through such massive files.

Iterating Through a Massive File

This video will help us process customer spreadsheets using the csv format.

Uploading a Spreadsheet into a Database

This video takes advantage of an (SPL Standard PHP Library) class to recursively get a list of all files and directories from a specific point in a directory tree.

Recursive Directory Iterator

Functions are essential in any PHP because of their immense use and diverse properties. You will need to learn to develop functions as a part of your PHP programming.

Preview 05:29

When working with a team, you would want to control the use of your code by others. Data types help you do that.

Hinting at Data Types

When you want to return a specific data type from an argument, you have to use return value data typing.

Using Return Value Data Typing

Iterators have various functionalities and are very important. Hence, understanding them is essential in PHP.

Using Iterators

According to our project, we need to create our own iterator. For that we use generators.

Writing Your Own Iterator Using Generators

This video will focus on how to develop classes.

Preview 06:16

This video will show you how to extend classes.

Extending classes

PHP lets you access properties or methods without having to create an instance of the class. This video shows you how to do that.

Using Static Properties and Methods

This video shows you how to use namespaces to avoid the problem of accidental class duplication and to facilitate autoloading.

Using Namespaces

In this video, we will simply define visibility as the mechanism to control the use of your code.

Defining Visibility

Interfaces are useful tools for systems architects and are often used to prototype an API. This video will explain you how to use them.

Using Interfaces

In this video, we will see how to use traits to copy-paste code into a class at the line indicated by the PHP interpreter.

Using Traits

PHP 7 introduced a new feature—anonymous classes. In this video, we will take a look at how to implement those.

Implementing Anonymous Classes

Learning how to use this extension will save you hours of time trying to master the command subsets of the equivalent individual vendor-specific database extensions.

Preview 13:26

Ability to build an OOP SQL query builder using methods named and, or, not, and so on.

Building an OOP SQL Query Builder

Learn to provide a limited subset of the results of a database query.

Handling Pagination

Learn to define entities to match the database tables using domain model software design pattern.

Defining Entities to Match Database Tables

Accomplish by tying the results of an RDBMS query into an iteration of entity instances.

Tying Entity Classes to RDBMS Queries

Display information on a customer and have the view logic perform a second lookup that gets a list of purchases for that customer.

Embedding Secondary Lookups into Query Results

Make a slight modification to the secondary lookup code presented in the preceding section.

Implementing jQuery DataTables PHP Lookups

In order to make a form generator generically useful, we need to create a generic form element generator. In this video, you will see how to do this.

Preview 07:21

A set of radio buttons needs the ability to display an overall label and errors. This video will help you create the radio button element generator.

Creating an HTML Radio Element Generator

In this video, you will see how to generate a SELECT tag and a series of OPTION tags.

Creating an HTML Select Element Generator

The purpose of a form factory is to generate a usable form object from a single configuration array. In this video, we will show how to implement the form factory.

Implementing a Form Factory

This video discusses how to incorporate the basic filtering concepts covered here into a comprehensive filter chaining mechanism.

Chaining $_POST Filters

This video discusses how to incorporate the basic validation concepts covered here into a comprehensive filter chaining mechanism.

Chaining $_POST Validators

Validation error messages can be tied to form elements, and rendered next to form fields. This video helps you to understand how this works.

Tying Validation to a Form

When considering a conversion between PHP data types and XML, we would normally consider an array as the primary target. The process of converting from a PHP array to XML differs radically from the approach needed to do the reverse. Let's see how we convert between them!

Preview 04:11

REST clients use HTTP to generate requests to external web services. By changing the HTTP method, we can cause the external service to perform different operations. In this video, we will use the Adapter software design pattern to present two different ways of implementing a REST client.

Creating a Simple REST Client

There are several concerns in a developer's mind, when implementing a REST server, such as how to capture the raw request; what API to publish and how to map HTTP verbs to API methods.?This video will guide you to create a REST server keeping all these factors in consideration.

Creating a Simple REST Server

Using SOAP, in contrast to the process of implementing a REST client or server, is quite easy as there is a PHP SOAP extension that provides both capabilities. Let's explore how to create a SOAP client.

Creating a Simple SOAP Client

As with the SOAP client, we can use the PHP SOAP extension to implement a SOAP server. The most difficult part of the implementation will be generating the WSDL from the API class. This video will show how to overcome this problem and create a SOAP server.

Creating a Simple SOAP Server

Defining classes with public properties, which are directly read or written is considered a good practice. But, the properties are not protected. In order to do that, we must define a getter and setter. This video will show us how to retrieve and set the value of a property.

Preview 06:46

Similar to database, where you have a table that contains data, and a separate index that points to the data, a linked list is where one list contains keys that point to keys in another list. This video will guide you how to implement a linked list in PHP.

Implementing a Linked List

Bubble sort is quite a popular exercise among students. It's critical to master this algorithm as there are many instances where built-in PHP sorting functions do not apply. Let's see how we sort a multi-dimensional array.

Building a Bubble Sort

Stack is a simple algorithm implemented as Last In First Out (LIFO). In programming, it is used to temporarily store information. The retrieval order is such that the most recent item is retrieved first. Let's see how to implement stack in PHP.

Implementing a Stack

Conventional searches go through the list in a sequential manner, which means that the maximum possible number of items to be searched could be the whole length of the list! This is not efficient. To expedite a search, we must learn implementing a binary search.

Building a Binary Search Class

To implement a search engine, we need to ensure multiple columns are included in the search. Also, what makes it difficult is the fact that users rarely provide enough information for an exact match. Let's explore how we can implement a search engine to overcome this problem.

Implementing a Search Engine

Properly displaying data from a multi-dimensional array has been a classic problem for web developers. This video shows you how to solve this problem by incorporating "hidden" division tags with a simple JavaScript visibility toggle.

Displaying a Multi-dimensional Array and Accumulating Tools

The hydrator pattern is a variation of the data transfer object design pattern. Its design principle is: moving data from one place to another. In this illustration, we will define classes to move data from an array to an object.

Preview 02:49

This video is the converse of the previous video. In this case, we need to pull values from object properties and return an associative array.

Building an Object to Array Hydrator

It is often the case that runtime conditions force the developer to define several ways of doing the same thing often using if/elseif/else block of commands. The strategy pattern attempts to formalize this process.

Implementing a Strategy Pattern

A mapper or data mapper works in much the same manner as a hydrator: converting data from one model, be it array or object, into another.

Defining a Mapper

There are two primary techniques to achieve a relational mapping between objects.

Implementing Object-Relational Mapping

The purpose of the Pub/Sub design pattern is to allow a method or function to publish a signal when an action of significance has taken place.

Implementing the Pub/Sub Design Pattern

Learn to present a basic mechanism that can be used to filter $_POST data arriving.

Preview 04:26

Validate to confirm the data matches criteria established according to the needs of your customer.

Validating $_POST Data

The ability to present several techniques will help you to safeguard your sessions.

Safeguarding the PHP Session

Learn to use a simple technique that will safeguard your forms against CSRF attacks.

Securing Forms with a Token

This video shows the ability to build a secure password generator using brute force attacks and rainbow tables.

Building a Secure Password Generator

Learn to design a token that is rendered into a graphic that is difficult for an automated attack system to decipher.

Safeguarding Forms with a CAPTCHA

This video shows the ability to understand how to perform strong encryption/decryption without using mcrypt.

Encrypting/Decrypting without mcrypt

Traits and interfaces are an important part of implementation and make coding in PHP 7 easy.

Preview 05:01

When used along with code in a try/catch block, exceptions are useful.

Universal Exception Handler

Along with exceptions, errors also need to be caught. When errors are confused with exceptions throwable is used.

Universal Error Handler

Overriding settings for secure session management has become easy with PHP 7.

Customizing Sessions Using the session_start Parameters
Functional PHP 7
19 Lectures 02:10:27

This video gives an overview of the entire course.

Preview 03:45

The aim of this video is to level-up developers to become aware of some of the additions to PHP 7 that favor writing functional programs, in particular, the strict scalar and return types.

Static versus Dynamic Typing

The goal of this video is to explain PHP's internal Closure class.

The Closure Class

The aim of this video is to explain what higher-order functions are.

Higher-Order Functions

The aim of this video is to learn how FP's mathematical foundation makes it easier for developers to reason about.

Preview 08:18

Functional programs raise the level of abstraction using a declarative style of development. Let's find out how!

Declarative Programming

The aim of this vide is to understand how functional programming promotes testable functions.

Testable Functions

The aim of this video is to provide a comprehensive definition of what Functional Programming (FP) is.

Preview 03:14

The aim of the video is to explain pure functions in-depth, looking at it from a mathematical point of view.

Pure Functions

Recursion offers a more natural approach to iteration in functional programming to imperative loops. Loops imply changes in state and side effect computing, while recursive functions could be made pure and side effect-free. The goal of this video is to discuss recursion and the recursive method.

Loops versus Recursion

The aim of this video is to demonstrate how to build programs relying solely on using pure functions in preparation for function composition.

FP Transformation

The aim of this video is to compare PHP's eager evaluation with lazy evaluation commonly present in functional languages.

Preview 14:01

This video will explain what partial function application is and will show its use through code samples.

Partial Function Application

The video will make you understand what currying is with an understanding of the curry function transformation.


The aim of this video is to show how composition is related to the overall general composition of a system and its libraries.

Preview 02:01

The aim of this video is to explain that function composition needs to meet two qualities: type and arity.

Defining Composition

The aim of this video is to introduce PRamda with basic examples using composition.

PRamda Functional Library

We implement a real-world problem using auto-currying with composition and PRamda functions. The goal of this last video is to compare the functional solution of the same problem with the non-functional solution.

Auto-Currying and Composition

The aim of this video is to give a brief overview of the entire course at a glance.

Course Summary
About the Instructor
Packt Publishing
3.9 Average rating
8,229 Reviews
58,974 Students
687 Courses
Tech Knowledge in Motion

Packt has been committed to developer learning since 2004. A lot has changed in software since then - but Packt has remained responsive to these changes, continuing to look forward at the trends and tools defining the way we work and live. And how to put them to work.

With an extensive library of content - more than 4000 books and video courses -Packt's mission is to help developers stay relevant in a rapidly changing world. From new web frameworks and programming languages, to cutting edge data analytics, and DevOps, Packt takes software professionals in every field to what's important to them now.

From skills that will help you to develop and future proof your career to immediate solutions to every day tech challenges, Packt is a go-to resource to make you a better, smarter developer.

Packt Udemy courses continue this tradition, bringing you comprehensive yet concise video courses straight from the experts.