Bird
Raised Fist0
PHPprogramming~15 mins

Union types in PHP - Mini Project: Build & Apply

Choose your learning style10 modes available
Using Union Types in PHP
📖 Scenario: You are building a simple PHP program that handles user input which can be either a number or a text message. You want to accept both types safely using PHP's union types feature.
🎯 Goal: Create a function that accepts a parameter which can be either an int or a string. The function will return a message describing the type and value received.
📋 What You'll Learn
Create a function called describeInput that accepts a parameter with a union type int|string.
Inside the function, use is_int() to check if the input is an integer.
Return a string describing the input type and value.
Call the function with both an integer and a string and print the results.
💡 Why This Matters
🌍 Real World
Union types help PHP programs accept multiple types safely, which is common when handling user input or data from different sources.
💼 Career
Understanding union types is important for writing flexible and type-safe PHP code, a skill valued in modern PHP development jobs.
Progress0 / 4 steps
1
Create the describeInput function with a union type parameter
Write a function called describeInput that accepts one parameter named $input with the union type int|string. Inside the function, just return an empty string "" for now.
PHP
Hint

Use function describeInput(int|string $input): string to declare the function with a union type parameter.

2
Add type checking inside the function
Inside the describeInput function, use is_int($input) to check if $input is an integer. If it is, return the string "Input is an integer: " concatenated with the value of $input. Otherwise, return "Input is a string: " concatenated with $input.
PHP
Hint

Use if (is_int($input)) { ... } else { ... } to check the type and return the correct message.

3
Call the function with an integer and a string
Call the describeInput function twice: once with the integer 42 and once with the string "hello". Store the results in variables $result1 and $result2 respectively.
PHP
Hint

Call the function with 42 and "hello" and save the results in $result1 and $result2.

4
Print the results
Print the values of $result1 and $result2 each on a new line using echo.
PHP
Hint

Use echo $result1 . "\n"; and echo $result2 . "\n"; to print each result on its own line.

Practice

(1/5)
1. What does a union type in PHP allow you to do?
function example(int|string $value) {}
easy
A. Only accept integer values
B. Accept multiple types for a parameter or return value
C. Only accept string values
D. Combine two functions into one

Solution

  1. Step 1: Understand union type syntax

    The | symbol between types means the parameter can be either type.
  2. Step 2: Analyze the example function

    The function accepts either an int or a string as input.
  3. Final Answer:

    Accept multiple types for a parameter or return value -> Option B
  4. Quick Check:

    Union types allow multiple types [OK]
Hint: Look for the | symbol to spot union types [OK]
Common Mistakes:
  • Thinking union types combine functions
  • Assuming only one type is allowed
  • Confusing union types with type casting
2. Which of the following is the correct syntax for a union type in PHP 8+?
function test(?? $param) {}
easy
A. int|string, float $param
B. int&string $param
C. int|string&float $param
D. int|string $param

Solution

  1. Step 1: Recall union type syntax

    Union types use the | symbol between types, e.g., int|string.
  2. Step 2: Check each option

    int|string $param uses | correctly. int&string $param uses & which is intersection, not union. int|string&float $param mixes union and intersection incorrectly. int|string, float $param uses a comma which is invalid.
  3. Final Answer:

    int|string $param -> Option D
  4. Quick Check:

    Union types use | symbol [OK]
Hint: Union types always use | between types [OK]
Common Mistakes:
  • Using & instead of | for union types
  • Separating types with commas
  • Mixing intersection and union syntax incorrectly
3. What will be the output of this PHP code?
function showType(int|string $value) {
    if (is_int($value)) {
        return "Integer: $value";
    } else {
        return "String: $value";
    }
}

echo showType(10) . "\n";
echo showType("hello") . "\n";
medium
A. 10\nhello
B. String: 10\nInteger: hello
C. Integer: 10\nString: hello
D. Error: Type mismatch

Solution

  1. Step 1: Understand the function behavior

    The function checks if the input is an integer or string and returns a formatted string accordingly.
  2. Step 2: Trace the calls

    Calling with 10 (int) returns "Integer: 10". Calling with "hello" (string) returns "String: hello".
  3. Final Answer:

    Integer: 10\nString: hello -> Option C
  4. Quick Check:

    Type check returns correct output [OK]
Hint: Check type with is_int or is_string inside function [OK]
Common Mistakes:
  • Assuming output is just values without labels
  • Confusing string and int outputs
  • Expecting a type error for valid union types
4. Identify the error in this PHP function using union types:
function add(int|float $a, int|float $b): int|float {
    return $a + $b;
}

add(5, "10");
medium
A. Passing a string "10" instead of int or float causes a type error
B. Return type should be only int
C. Union types cannot be used in return types
D. Function should not accept two parameters

Solution

  1. Step 1: Check parameter types

    The function expects parameters of type int or float only.
  2. Step 2: Analyze the function call

    The call passes 5 (int) and "10" (string). String is not allowed, causing a type error.
  3. Final Answer:

    Passing a string "10" instead of int or float causes a type error -> Option A
  4. Quick Check:

    Parameter types must match union types exactly [OK]
Hint: Check argument types match union types exactly [OK]
Common Mistakes:
  • Assuming string '10' is accepted as int
  • Thinking union types disallow return types
  • Ignoring parameter count
5. You want a function that accepts either an array of integers or a single integer and returns the sum. Which union type and code is correct?
function sumValues(?? $input): int {
    if (is_array($input)) {
        return array_sum($input);
    }
    return $input;
}
hard
A. int|array $input
B. int|string $input
C. array|float $input
D. int|bool $input

Solution

  1. Step 1: Identify input types needed

    The function accepts either a single integer or an array of integers.
  2. Step 2: Match union type to input

    int|array $input uses int|array, which matches the requirement. Others include wrong types like string, float, or bool.
  3. Final Answer:

    int|array $input -> Option A
  4. Quick Check:

    Union type matches all accepted input types [OK]
Hint: Match union types exactly to all input types needed [OK]
Common Mistakes:
  • Using string or bool instead of array
  • Not including all input types in union
  • Confusing float with int
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard