Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
PHP 8 Programming Tips, Tricks and Best Practices
PHP 8 Programming Tips, Tricks and Best Practices

PHP 8 Programming Tips, Tricks and Best Practices: A practical guide to PHP 8 features, usage changes, and advanced programming techniques

eBook
€28.99 €32.99
Paperback
€41.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Table of content icon View table of contents Preview book icon Preview Book

PHP 8 Programming Tips, Tricks and Best Practices

Chapter 1: Introducing New PHP 8 OOP Features

In this chapter, you are introduced to new PHP: Hypertext Preprocessor 8 (PHP 8) features specific to Object-Oriented Programming (OOP). The chapter features a set of classes that can be used to generate CAPTCHA images (CAPTCHA is an acronym for Completely Automated Public Turing test to tell Computers and Humans Apart), clearly illustrating new PHP 8 features and concepts. This chapter is critical in helping you quickly incorporate new PHP 8 features into your own practice. In doing so, your code will run faster and more efficiently, with fewer bugs.

The following topics are covered in this chapter:

  • Using constructor property promotion
  • Working with attributes
  • Incorporating match expressions into your program code
  • Understanding named arguments
  • Exploring new data types
  • Improving code using typed properties

Technical requirements

To examine and run the code examples provided in this chapter, the minimum recommended hardware is listed here:

  • x86_64-based desktop PC or laptop
  • 1 gigabyte (GB) free disk space
  • 4 GB of random-access memory (RAM)
  • 500 kilobits per second (Kbps) or faster internet connection

In addition, you will need to install the following software:

  • Docker
  • Docker Compose

This book uses a pre-built Docker image that contains all the needed software to create and run the PHP 8 code examples covered in this book. You do not need to install PHP, Apache, or MySQL on your computer: just use Docker and the provided image.

To set up a test environment to run the code examples, proceed as follows:

  1. Install Docker.

    If you are running Windows, start here:

    https://docs.docker.com/docker-for-windows/install/

    If you are on a Mac, start here:

    https://docs.docker.com/docker-for-mac/install/

    If you are on Linux, have a look here:

    https://docs.docker.com/engine/install/

  2. Install Docker Compose. For all operating systems, start here:

    https://docs.docker.com/compose/install/

  3. Install the source code associated with this book onto your local computer.

    If you have installed Git, use the following command:

    git clone https://github.com/PacktPublishing/PHP-8-Programming-Tips-Tricks-and-Best-Practices.git ~/repo

    Otherwise, you can simply download the source code from this Uniform Resource Locator (URL): https://github.com/PacktPublishing/PHP-8-Programming-Tips-Tricks-and-Best-Practices/archive/main.zip. You can then unzip into a folder you create, which we refer to as /repo in this book.

  4. You can now start the Docker daemon running. For Windows or Mac, all you need to do is to activate the Docker Desktop app.

    If you are running Ubuntu or Debian Linux, issue this command:

    sudo service docker start

    For Red Hat, Fedora, or CentOS, use this command:

    sudo systemctl start docker

  5. Build a Docker container associated with this book and bring it online. To do so, proceed as follows.

    From your local computer, open Command Prompt (terminal window). Change the directory to /repo. For the first time only, issue the docker-compose build command to build the environment. Note that you might need root (administrator) privileges to run Docker commands. If this is the case, either run as administrator (for Windows) or preface the command with sudo. Depending on your connection speed, the initial build might take quite a bit of time to complete!

  6. To bring the container up, proceed as follows
  7. From your local computer, open Command Prompt (terminal window). Change the directory to /repo. Bring the Docker container online in background mode by running the following command:
    docker-compose up -d

    Note that you actually don't need to build the container separately. If the container is not built when you issue the docker-compose up command, it will be built automatically. On the other hand, it might be convenient to build the container separately, in which case docker build will suffice.

    Here's a useful command to ensure all containers are running:

    docker-compose ps
  8. To access the running Docker container web server, proceed as follows.

    Open the browser on your local computer. Enter this URL to access PHP 8 code:

    http://localhost:8888

    Enter this URL to access PHP 7 code:

    http://localhost:7777

  9. To open a command shell into the running Docker container, proceed as follows.

    From your local computer, open Command Prompt (terminal window). Issue this command to access the PHP 8 container:

    docker exec -it php8_tips_php8 /bin/bash 

    Issue this command to access the PHP 7 container:

    docker exec -it php8_tips_php7 /bin/bash
  10. When you are finished working with the container, to take it offline open Command Prompt (terminal window) from your local computer and issue this command:
    docker-compose down 

The source code for this chapter is located here:

https://github.com/PacktPublishing/PHP-8-Programming-Tips-Tricks-and-Best-Practices

Important note

If your host computer uses Advanced RISC Machines (ARM) architecture (for example, Raspberry Pi), you will need to use a modified Dockerfile.

Tip

It would be an excellent idea to get a quick overview of Docker technology and terms by reviewing this article: https://docs.docker.com/get-started/.

We can now begin our discussion by having a look at constructor property promotion.

Using constructor property promotion

Aside from the Just-In-Time (JIT) compiler, one of the greatest new features introduced in PHP 8 is constructor property promotion. This new feature combines property declarations and argument lists in the __construct() method signature, as well as assigning defaults. In this section, you will learn how to substantially reduce the amount of coding required in property declarations as well as in the __construct() method signature and body.

Property promotion syntax

The syntax needed to invoke constructor property promotion is identical to that used in PHP 7 and earlier, with the following differences:

  • You need to define a visibility level
  • You do not have to explicitly declare the properties in advance
  • You do not need to make assignments in the body of the __construct() method

Here is a bare-bones example of code that uses constructor property promotion:

// /repo/ch01/php8_prop_promo.php
declare(strict_types=1);
class Test {
    public function __construct(
        public int $id,
        public int $token = 0,
        public string $name = '')
    { }
}
$test = new Test(999);
var_dump($test);

When the preceding code block is executed, this is the output:

object(Test)#1 (3) {
  ["id"]=> int(999)
  ["token"]=> int(0)
  ["name"]=> string(0) ""
}

This shows that an instance of Test type has been created using default values. Now, let's have a look at how this feature might save a substantial amount of coding.

Using property promotion for code reduction

In a conventional OOP PHP class, the following three things need to be done:

  1. Declare the properties, as follows:
    /repo/src/Php8/Image/SingleChar.php
    namespace Php7\Image;
    class SingleChar {
        public $text     = '';
        public $fontFile = '';
        public $width    = 100;
        public $height   = 100;
        public $size     = 0;
        public $angle    = 0.00;
        public $textX    = 0;
        public $textY    = 0;
  2. Identify the properties and their data type in the __construct() method signature, as follows:
    const DEFAULT_TX_X = 25;
    const DEFAULT_TX_Y = 75;
    const DEFAULT_TX_SIZE  = 60;
    const DEFAULT_TX_ANGLE = 0;
    public function __construct(
        string $text,
        string $fontFile,
        int $width  = 100,
        int $height = 100,
        int $size   = self::DEFAULT_TX_SIZE,
        float $angle = self::DEFAULT_TX_ANGLE,
        int $textX  = self::DEFAULT_TX_X,
        int $textY  = self::DEFAULT_TX_Y)   
  3. In the body of the __construct() method, assign values to properties, like this:
    {   $this->text     = $text;
        $this->fontFile = $fontFile;
        $this->width    = $width;
        $this->height   = $height;
        $this->size     = $size;
        $this->angle    = $angle;
        $this->textX    = $textX;
        $this->textY    = $textY;
        // other code not shown 
    }

As the number of constructor arguments increases, the amount of work you need to do also increases significantly. When constructor property promotion is applied, the amount of code required to do the same as previously shown is reduced to one-third of the original.

Let's now have a look at the same block of code as shown previously, but rewritten using this powerful new PHP 8 feature:

// /repo/src/Php8/Image/SingleChar.php
// not all code shown
public function __construct(
    public string $text,
    public string $fontFile,
    public int    $width    = 100,
    public int    $height   = 100,
    public int    $size     = self::DEFAULT_TX_SIZE,
    public float   $angle    = self::DEFAULT_TX_ANGLE,
    public int    $textX    = self::DEFAULT_TX_X,
    public int    $textY    = self::DEFAULT_TX_Y)
    { // other code not shown }

Amazingly, what took 24 lines of code in PHP 7 and earlier can be collapsed into eight lines of code using this new PHP 8 feature!

You are completely free to include other code in the constructor. In many cases, however, constructor property promotion takes care of everything normally done in the __construct() method, which means you can literally leave it empty ({ }).

Now, in the next section, you learn about a new feature called attributes.

Tip

Have a look at the full SingleChar class for PHP 7 here:

https://github.com/PacktPublishing/PHP-8-Programming-Tips-Tricks-and-Best-Practices/tree/main/src/Php7/Image

Also, the equivalent PHP 8 class is found here:

https://github.com/PacktPublishing/PHP-8-Programming-Tips-Tricks-and-Best-Practices/tree/main/src/Php8/Image

For more information on this new feature, have a look at the following:

https://wiki.php.net/rfc/constructor_promotion

Left arrow icon Right arrow icon
Download code icon Download Code

Key benefits

  • Get the hang of all the new features introduced in PHP 8
  • Learn how to detect potential code breaks and keep your application code running smoothly in PHP 8
  • Explore an exciting new trend - asynchronous PHP programming using Swoole and Fibers

Description

Thanks to its ease of use, PHP is a highly popular programming language used on over 78% of all web servers connected to the Internet. PHP 8 Programming Tips, Tricks, and Best Practices will help you to get up-to-speed with PHP 8 quickly. The book is intended for any PHP developer who wants to become familiar with the cool new features available in PHP 8, and covers areas where developers might experience backward compatibility issues with their existing code after a PHP 8 update. The book thoroughly explores best practices, and highlights ways in which PHP 8 enforces these practices in a much more rigorous fashion than its earlier versions. You'll start by exploring new PHP 8 features in the area of object-oriented programming (OOP), followed by enhancements at the procedural level. You'll then learn about potential backward compatible breaks and discover best practices for improving performance. The last chapter of the book gives you insights into PHP async, a revolutionary new way of programming, by providing detailed coverage and examples of asynchronous programming using the Swoole extension and Fibers. By the end of this PHP book, you'll not only have mastered the new features, but you'll also know exactly what to watch out for when migrating older PHP applications to PHP 8.

Who is this book for?

This book is for PHP developers at all levels who have experience in PHP 5 or above. If you're just getting started with PHP, you'll find the code examples useful for learning the language. Developers who have worked for a few months on one or more PHP projects will be able to apply the tips and techniques to the code at hand, while those with many years of PHP experience are sure to appreciate the concise coverage of new PHP 8 features.

What you will learn

  • Gain a comprehensive understanding of the new PHP 8 object-oriented features
  • Discover new PHP 8 procedural programming enhancements
  • Understand improvements in error handling in PHP 8
  • Identify potential backward compatibility issues
  • Avoid traps due to changes in PHP extensions
  • Find out which features have been deprecated and/or removed in PHP 8
  • Become well-versed with programming best practices enforced by PHP 8

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Aug 27, 2021
Length: 528 pages
Edition : 1st
Language : English
ISBN-13 : 9781801079709
Category :
Languages :
Tools :

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Aug 27, 2021
Length: 528 pages
Edition : 1st
Language : English
ISBN-13 : 9781801079709
Category :
Languages :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
€189.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts
€264.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total 102.97
Clean Code in PHP
€27.99
PHP 8 Programming Tips, Tricks and Best Practices
€41.99
The Art of Modern PHP 8
€32.99
Total 102.97 Stars icon

Table of Contents

16 Chapters
Section 1: PHP 8 Tips Chevron down icon Chevron up icon
Chapter 1: Introducing New PHP 8 OOP Features Chevron down icon Chevron up icon
Chapter 2: Learning about PHP 8's Functional Additions Chevron down icon Chevron up icon
Chapter 3: Taking Advantage of Error-Handling Enhancements Chevron down icon Chevron up icon
Chapter 4: Making Direct C-Language Calls Chevron down icon Chevron up icon
Section 2: PHP 8 Tricks Chevron down icon Chevron up icon
Chapter 5: Discovering Potential OOP Backward-Compatibility Breaks Chevron down icon Chevron up icon
Chapter 6: Understanding PHP 8 Functional Differences Chevron down icon Chevron up icon
Chapter 7: Avoiding Traps When Using PHP 8 Extensions Chevron down icon Chevron up icon
Chapter 8: Learning about PHP 8's Deprecated or Removed Functionality Chevron down icon Chevron up icon
Section 3: PHP 8 Best Practices Chevron down icon Chevron up icon
Chapter 9: Mastering PHP 8 Best Practices Chevron down icon Chevron up icon
Chapter 10: Improving Performance Chevron down icon Chevron up icon
Chapter 11: Migrating Existing PHP Apps to PHP 8 Chevron down icon Chevron up icon
Chapter 12: Creating PHP 8 Applications Using Asynchronous Programming Chevron down icon Chevron up icon
Other Books You May Enjoy Chevron down icon Chevron up icon

Customer reviews

Top Reviews
Rating distribution
Full star icon Full star icon Full star icon Full star icon Half star icon 4.9
(10 Ratings)
5 star 90%
4 star 10%
3 star 0%
2 star 0%
1 star 0%
Filter icon Filter
Top Reviews

Filter reviews by




Amazon Customer Sep 24, 2021
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I have more than 20 years of coding experience behind me. And PHP is the first language I have used commercially for many, many years. But I don't use it anymore. My curiosity drove me to discover what PHP offers in this age and where it stands amongst other languages.Doug not only demonstrates the current state of the language but walks you through its evolution from PHP5.x to PHP8.x - by providing code samples in different versions of PHP to solve a specific issue or a domain, by supporting with in-depth explanations and by demonstrating the best practices.The past, the current, the future of PHP is the fundamental part of this book.Highly recommend it to any PHP developer. One of the best PHP books I have ever read.
Amazon Verified review Amazon
richard holmes Aug 30, 2021
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Normally when I read a highly technical book, I read the first couple of pages and then go hunting for what I really want to find out or what I need to know.When I started to read this book, I was at page 125 before I realized how far I had gotten. I know it sounds trite but it was more like a novel I could not put down than a book that was explaining a highly technical subject.The way the author presented the information was; to the point, laser focused and it was concise. The way he explained it, why it was different from previous versions of PHP and showed the differences on how it was implemented between the versions (7 and 8 (the two most used comparisons) gave a good contrast between the 2 versions. I had used PHP a long time ago (prior to 5) and was amazed at how far it has come in the intervening years since I had last used it. I had expected to be lost when I read it, but the Author's style of explaining it, giving you examples and showing how the new version compared to the previous versions was very educational.
Amazon Verified review Amazon
Priya R Shastri Dec 15, 2021
Full star icon Full star icon Full star icon Full star icon Full star icon 5
In this book the author, an accomplished computer science enthusiast and educator has written some of the tips for PHP8. This version of PHP8 provides faster execution to application code and smaller memory footprint for the programs.In chapter 1 Introducing the PHP8 OOP features a brief discussion of OOP concepts are done.The mixed and union data types are discussed in detail here. The reduction in code footprint by using construct() class is detailed.In chapter 2 Learning about PHP8 functional additions, the new features added in PHP8 are discussed here.The new operators that have been added to the PHP8 are variadics operator, nullsafe operator, concatenate operator and ternary operator. There is a performance different while using array_splice(), str_contains() in PHP7 and PHP 8. In chapter 3 Taking advantage of error handling properties. In PHP 8, the “Notice” error in PHP 7 has been made into a “Warning”. The usage of str_ends_with() function is provided in this chapter.The function array_pop() returns TypeError instead of Warning in PHP8. The use of @operator to silence the errors in PHP code is highlighted. This helps the program to continue processing without getting stuck on errors.In chapter 4 Making direct C calls in PHP, the Foreign function interface (FFI) is explained.The arraytype(), cdef(), new(), scope(), string() and type() functions for FFI are discussed here. This is a method to add an extension to PHP using FFI. In chapter 5 Discovering potential OOP backward compatibility breaks, the author describes the potential problems to fix before migrating the application to PHP8. The autoload() function are described. Special attention needs to be paid to constructor() and destructor() functions. In chapter 6 the functional differences between PHP8 and PHP7 are highlighted. In chapter 7 the author provides a table of functions that now return object instances instead of resources in PHP8.(see below)I admire the following in this book:1. Good structure of topics, clear examples and clean code.2. Comparisons between PHP7 and PHP8 are cleanly provided.Overall,great reference material for applications getting migrated to PHP8 from PHP7.
Amazon Verified review Amazon
Yehuda Nov 10, 2021
Full star icon Full star icon Full star icon Full star icon Full star icon 5
The author did a great job Introducing PHP 8 features with great examples.The author didn't skip any aspect of PHP 8 language from OOP, functional programming, best practices, migrating old versions, and more. everything is sorted in the matching section.The author even added a "bonus" section and a very interesting one about Asynchronous Programming.Disclaimer:I am part of a pre-release review group and I got a copy from the publisher to review it.
Amazon Verified review Amazon
Slavey Karadzhov Sep 14, 2021
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I find the book really helpful. Working for Zend, I am dealing on a daily basis withPHP migrations and Doug's book helped me and our customers get started with PHP 8 migrations in no time.What I really like about this particular book is that it is clean-and-lean and points you in a very precise and structured way to the new additions in PHP 8 and how they might affect your existing PHP code base.In the book you will find great examples of advantages of the new features, comparisons with existing ones that will help you spot even the slightest differences and a lot of other useful information.Highly recommend the book if you are looking to improve your PHP 8 skills, migrate old PHP projects, or even prepare for a PHP 8 certification.The book might be hard for newcomers that have never dealt before with the PHP language. Therefore beware - at least a beginner PHP knowledge is required.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook? Chevron down icon Chevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Chevron down icon Chevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Chevron down icon Chevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Chevron down icon Chevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Chevron down icon Chevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Chevron down icon Chevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.