Object-Oriented PHP · Lesson 10 of 14
Polymorphism
Call a shared contract while allowing implementations to differ.
Lesson
Polymorphism lets code use a shared interface while different classes provide their own implementation. This keeps callers independent of a specific concrete class and supports substituting test doubles. Prefer contracts that express behavior clients actually need.
The same caller can format different implementations through one method contract.
Further guidance
Give an object one clear responsibility and protect state that must satisfy a rule. Prefer a small public contract and composition for replaceable collaborators; use inheritance only for a genuine subtype. Test behavior through public methods instead of relying on internal implementation details.
Practice task: Create a fresh example for Polymorphism. Predict the result before running it, then change one input and explain why the result changes. Test a normal case and one boundary or invalid case where it applies. Compare your output with the example and note one rule you would use in a real project.
Code examples
Polymorphism
PHP
interface Formatter { public function format(string $value): string; }
class UppercaseFormatter implements Formatter
{
public function format(string $value): string { return strtoupper($value); }
}
echo (new UppercaseFormatter())->format('php');
Expected output
PHP
Key points
- Call a shared contract while allowing implementations to differ.
- Protect object invariants behind a small public API.
- Prefer composition unless inheritance expresses a genuine subtype.
Your learning progress
Finish this lesson
Optional practice
PHP playground
This site does not execute learner-provided PHP code. Connect a secured PHP sandbox service before enabling code execution.
Execution is disabled. No code is sent to a server.