Type hinting in PHP means specifying the expected data type of a function's argument or return value to help catch errors early and improve code clarity.
Click to reveal answer
beginner
How does type hinting with a parent class work in PHP?
When you type hint a parameter or return type with a parent class, PHP accepts any object that is an instance of that parent class or any of its child classes.
Click to reveal answer
intermediate
Why use a parent class for type hinting instead of a specific child class?
Using a parent class allows your function to accept a wider range of objects, making your code more flexible and reusable with different child classes.
Click to reveal answer
intermediate
Example: What happens if you type hint a function parameter with a parent class but pass an unrelated object?
PHP will throw a TypeError because the passed object does not match the expected parent class or its children.
Click to reveal answer
intermediate
Can you type hint interfaces the same way as parent classes in PHP?
Yes, you can type hint interfaces, and PHP will accept any object that implements that interface, similar to how it works with parent classes.
Click to reveal answer
What does type hinting with a parent class allow in PHP?
AAccept objects of the parent class and its child classes
BAccept only objects of the parent class
CAccept any data type
DAccept only primitive types
✗ Incorrect
Type hinting with a parent class allows the function to accept objects of that parent class and any of its child classes.
What error occurs if you pass an unrelated object to a function type hinted with a parent class?
ANotice
BSyntaxError
CWarning
DTypeError
✗ Incorrect
PHP throws a TypeError when the passed object does not match the expected type hint.
Which of these can be used for type hinting in PHP?
AOnly parent classes
BOnly child classes
CParent classes and interfaces
DOnly primitive types
✗ Incorrect
PHP supports type hinting with parent classes and interfaces.
Why is type hinting with a parent class useful?
AIt increases code flexibility by accepting multiple related object types
BIt restricts the function to one specific class
CIt disables error checking
DIt only works with primitive types
✗ Incorrect
Type hinting with a parent class allows accepting any child class objects, making code more flexible.
If a function parameter is type hinted with a parent class, can you pass an instance of a child class?
AOnly if explicitly cast
BYes
CNo
DOnly if the child class is final
✗ Incorrect
Passing an instance of a child class is allowed because it inherits from the parent class.
Explain how type hinting with parent classes improves code flexibility in PHP.
Think about how one function can work with many related object types.
You got /3 concepts.
Describe what happens when you pass an object that does not inherit from the parent class to a type hinted function parameter.
Consider PHP's behavior when types don't match.
You got /3 concepts.
Practice
(1/5)
1.
What does type hinting with a parent class in PHP allow?
For example, using function foo(ParentClass $obj).
easy
A. It disables type checking for the function parameter.
B. It restricts the function to accept only the exact parent class, not child classes.
C. It only accepts objects of child classes, not the parent class itself.
D. It allows passing any object that is an instance of the parent class or its child classes.
Solution
Step 1: Understand type hinting with parent classes
Type hinting with a parent class means the function accepts objects of that class or any subclass.
Step 2: Apply to the example
Using ParentClass $obj allows passing instances of ParentClass or any class that extends it.
Final Answer:
It allows passing any object that is an instance of the parent class or its child classes. -> Option D
Quick Check:
Parent class type hint = accepts parent or child objects [OK]
Hint: Parent class hint accepts parent and child objects [OK]
Common Mistakes:
Thinking only exact parent class objects are accepted
Believing child classes are excluded
Confusing type hinting with disabling checks
2.
Which of the following is the correct syntax to type hint a function parameter with a parent class Animal in PHP?
function feed(____ $pet) { /* ... */ }
easy
A. Animal $pet
B. $pet Animal
C. class Animal $pet
D. type Animal $pet
Solution
Step 1: Recall PHP type hint syntax
In PHP, the type hint comes before the variable name: Type $variable.
Step 2: Apply to the example
For class Animal, the correct syntax is Animal $pet.
Final Answer:
Animal $pet -> Option A
Quick Check:
Type hint before variable name = Animal $pet [OK]
Hint: Type hint is class name before variable with $ [OK]
Common Mistakes:
Placing variable before type hint
Adding extra keywords like 'class' or 'type'
Omitting the $ sign on variable
3.
Given the code below, what will be the output?
class Vehicle {}
class Car extends Vehicle {}
function startEngine(Vehicle $v) {
echo get_class($v);
}
$car = new Car();
startEngine($car);
medium
A. Error: Type mismatch
B. Vehicle
C. Car
D. No output
Solution
Step 1: Understand type hinting with inheritance
The function expects a Vehicle object or subclass. Car extends Vehicle, so passing Car is valid.
Step 2: Analyze output of get_class()
get_class($v) returns the actual class name of the object, which is 'Car'.
Final Answer:
Car -> Option C
Quick Check:
Type hint accepts subclass; get_class returns actual class [OK]
Hint: get_class shows actual object class, not type hint [OK]
Common Mistakes:
Assuming output is parent class name
Expecting a type error for subclass
Thinking no output is produced
4.
What is the error in the following PHP code?
class Fruit {}
class Apple extends Fruit {}
function eat(Apple $fruit) {
echo "Eating apple";
}
$fruit = new Fruit();
eat($fruit);
medium
A. Syntax error: missing semicolon
B. Fatal error: Argument must be of type Apple, Fruit given
C. No error, outputs 'Eating apple'
D. Warning: Undefined variable $fruit
Solution
Step 1: Check type hint and argument
The function expects an Apple object, but the argument is a Fruit object (parent class).
Step 2: Understand PHP type hint rules
PHP requires the argument to be the hinted class or subclass, not a parent class. Passing Fruit causes a fatal error.
Final Answer:
Fatal error: Argument must be of type Apple, Fruit given -> Option B
Quick Check:
Type hint mismatch with parent class argument = fatal error [OK]
Hint: Child class hint rejects parent class objects [OK]
Common Mistakes:
Thinking parent class can replace child hint
Expecting no error on type mismatch
Confusing syntax error with type error
5.
Consider the following classes and function:
class Employee {}
class Manager extends Employee {}
class Developer extends Employee {}
function assignTask(Employee $e) {
if ($e instanceof Manager) {
return "Assigning management task";
} elseif ($e instanceof Developer) {
return "Assigning coding task";
} else {
return "Assigning general task";
}
}
$worker = new Manager();
echo assignTask($worker);
What will be the output and why?
hard
A. Assigning management task
B. Assigning coding task
C. Assigning general task
D. Type error: argument must be Employee
Solution
Step 1: Check type hint and argument
The function accepts any Employee or subclass. Manager is a subclass, so passing $worker is valid.
Step 2: Evaluate instanceof conditions
The code checks if $e is a Manager, which is true, so it returns "Assigning management task".
Final Answer:
Assigning management task -> Option A
Quick Check:
Type hint accepts subclass; instanceof detects Manager [OK]
Hint: Type hint parent + instanceof child checks for behavior [OK]
Common Mistakes:
Expecting type error for subclass argument
Ignoring instanceof checks order
Assuming general task is assigned
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.