PHP 8.0 has introduced several new features, making the coding experience easier and more efficient. One of the outstanding features is the Union Types. In this tutorial, we'll explore the concept of union types, how to use them, and the benefits they provide.

Introduction to Union Types

Union types are a new feature in PHP 8.0 that allow the declaration of multiple types for a property, return type, and function argument. For example, a property or function argument can accept an integer or a floating-point number, providing more robust code and flexibility for optimization.

Declaring Union Types

Declaring a union type is easy. You can use the pipe symbol "|" to differentiate between the different types. The basic syntax is as follows:

Using Union Types in Properties

You can declare properties that can have multiple types using the following syntax:

class MyClass {
    public int|string $myProperty;

Specifying Multiple Return Types with Union Types

Union Types can be used to specify that a function can return multiple types. Here's how you can do it:

function myFunction(): int|float {
    // Your code here

Using Union Types in Function Arguments

function myFunction(int|string $parameter) {
    // Your code here

Utilizing Union Types in Geometric Calculations with PHP 8.0

Here's a practical example of how to use the union type in PHP 8.0. In this example, I've defined a class that deals with geometric shapes and uses union types to compute different values belonging to various shapes.

class Geometry {
    public function areaOfRectangle(int|float $length, int|float $width): int|float {
        return $length * $width;

    public function perimeterOfCircle(int|float $radius): int|float {
        return 2 * pi() * $radius;

    public function volumeOfCylinder(int|float $radius, int|float $height): int|float {
        return pi() * $radius ** 2 * $height;

$geometry = new Geometry();

$rectangleArea = $geometry->areaOfRectangle(10, 5);
echo "Area of Rectangle: {$rectangleArea}\n"; // Outputs: Area of Rectangle: 50

$circlePerimeter = $geometry->perimeterOfCircle(7);
echo "Perimeter of Circle: {$circlePerimeter}\n"; // Outputs: Perimeter of Circle: 43.982297150257

$cylinderVolume = $geometry->volumeOfCylinder(3, 10);
echo "Volume of Cylinder: {$cylinderVolume}\n"; // Outputs: Volume of Cylinder: 282.74333882307

PHP doesn't directly support Union Types for standalone variables, but they can be used in classes for properties, return types, and function arguments.


By learning this tutorial on using union types in PHP 8.0, you should now know how to declare multiple types for properties, return types, and function arguments. This feature makes your code more flexible, efficient, and aligned with the latest PHP practices, enhancing your development skills and facilitating more robust solutions.

Found This Useful? Share This Page!