📖 Scenario: Imagine you are building a simple system where different devices can perform multiple actions. For example, a device might be able to print and scan documents. To organize this, you use interfaces to define these actions.
🎯 Goal: You will create two interfaces, Printer and Scanner, each with one method. Then, you will create a class MultiFunctionDevice that implements both interfaces. Finally, you will create an object of this class and call both methods.
📋 What You'll Learn
Create an interface called Printer with a method printDocument().
Create an interface called Scanner with a method scanDocument().
Create a class called MultiFunctionDevice that implements both Printer and Scanner interfaces.
Implement the methods printDocument() and scanDocument() in the MultiFunctionDevice class.
Create an object of MultiFunctionDevice and call both printDocument() and scanDocument() methods.
Print the outputs exactly as specified.
💡 Why This Matters
🌍 Real World
Many devices like printers, scanners, and fax machines support multiple functions. Using interfaces helps organize these capabilities clearly in code.
💼 Career
Understanding multiple interface implementation is important for designing flexible and maintainable code in object-oriented programming, a common requirement in software development jobs.
Progress0 / 4 steps
1
Create the Printer interface
Create an interface called Printer with a method declaration printDocument().
PHP
Hint
Use the interface keyword to create an interface. Inside, declare the method printDocument() without a body.
2
Create the Scanner interface
Create an interface called Scanner with a method declaration scanDocument().
PHP
Hint
Similar to the first step, create another interface named Scanner with the method scanDocument().
3
Create the MultiFunctionDevice class implementing both interfaces
Create a class called MultiFunctionDevice that implements both Printer and Scanner interfaces. Implement the methods printDocument() and scanDocument() so that printDocument() prints exactly "Printing document..." and scanDocument() prints exactly "Scanning document...".
PHP
Hint
Use the implements keyword to implement multiple interfaces separated by commas. Define both methods with the exact echo statements.
4
Create object and call methods
Create an object called device of the class MultiFunctionDevice. Call the methods printDocument() and scanDocument() on this object, each on a separate line.
PHP
Hint
Create the object with new MultiFunctionDevice(). Call the methods with ->. Use echo "\n"; to print a new line between outputs.
Practice
(1/5)
1. What does it mean when a PHP class implements multiple interfaces separated by commas?
easy
A. The class can only use one interface at a time.
B. The class inherits properties from multiple parent classes.
C. The class automatically creates methods from the interfaces.
D. The class promises to have all methods defined in all those interfaces.
Solution
Step 1: Understand interface implementation
When a class implements interfaces, it promises to include all methods declared in those interfaces.
Step 2: Multiple interfaces separated by commas
Listing interfaces separated by commas means the class must implement all methods from each interface.
Final Answer:
The class promises to have all methods defined in all those interfaces. -> Option D
Quick Check:
Multiple interfaces = all methods implemented [OK]
Hint: Remember: commas mean all interfaces must be implemented [OK]
Common Mistakes:
Thinking interfaces provide properties
Confusing interfaces with class inheritance
Believing methods are auto-created
2. Which of the following is the correct syntax for a PHP class implementing two interfaces named FirstInterface and SecondInterface?
easy
A. class MyClass extends FirstInterface, SecondInterface {}
B. class MyClass implements FirstInterface, SecondInterface {}
C. class MyClass implements FirstInterface SecondInterface {}
D. class MyClass uses FirstInterface, SecondInterface {}
Solution
Step 1: Identify correct keyword for interfaces
PHP uses the keyword implements to indicate a class uses interfaces.
Step 2: Check syntax for multiple interfaces
Multiple interfaces are listed separated by commas after implements.
Final Answer:
class MyClass implements FirstInterface, SecondInterface {} -> Option B
Hint: Use 'implements' and commas to list interfaces [OK]
Common Mistakes:
Using 'extends' instead of 'implements' for interfaces
Missing commas between interface names
Using 'uses' keyword incorrectly
3. What will be the output of the following PHP code?
interface A { public function foo(); } interface B { public function bar(); } class Test implements A, B { public function foo() { return 'foo'; } public function bar() { return 'bar'; } } $obj = new Test(); echo $obj->foo() . ' ' . $obj->bar();
medium
A. foo bar
B. foobar
C. Syntax error
D. Runtime error
Solution
Step 1: Check interface methods implemented
The class Test implements both interfaces A and B and defines both methods foo() and bar() correctly.
Step 2: Understand output of method calls
Calling foo() returns 'foo' and bar() returns 'bar'. Echo concatenates them with a space.
Final Answer:
foo bar -> Option A
Quick Check:
Implemented methods return strings combined with space [OK]
Hint: Check all interface methods are implemented to avoid errors [OK]
Common Mistakes:
Forgetting to implement all interface methods
Missing space in echo output
Expecting concatenation without space
4. Identify the error in this PHP code:
interface X { public function methodX(); } interface Y { public function methodY(); } class Demo implements X, Y { public function methodX() { return 'X'; } }
medium
A. Interface Y cannot be implemented with interface X.
B. Class Demo should extend interfaces, not implement.
C. Class Demo must implement methodY() from interface Y.
D. No error, code is correct.
Solution
Step 1: Check implemented interfaces and methods
Class Demo implements interfaces X and Y, so it must define all methods from both.
Step 2: Identify missing method
methodY() from interface Y is not implemented, causing an error.
Final Answer:
Class Demo must implement methodY() from interface Y. -> Option C
Quick Check:
All interface methods must be implemented [OK]
Hint: Implement all methods from every interface you list [OK]
Common Mistakes:
Implementing only some interface methods
Confusing extends with implements
Assuming interfaces can be partially implemented
5. Given these interfaces and classes:
interface Logger { public function log(string $msg); } interface Notifier { public function notify(string $msg); } class System implements Logger, Notifier { private array $logs = []; public function log(string $msg) { $this->logs[] = $msg; } public function notify(string $msg) { echo "Notify: $msg\n"; } public function getLogs(): array { return $this->logs; } } $sys = new System(); $sys->log('Start'); $sys->notify('Alert'); $sys->log('End'); print_r($sys->getLogs());
What is the output of this code?
hard
A. Notify: Alert
Array
(
[0] => Start
[1] => End
)
B. Array
(
[0] => Start
[1] => End
)
Notify: Alert
C. Notify: Alert
Array
(
[0] => Alert
)
D. Syntax error due to missing interface methods
Solution
Step 1: Trace method calls
First, log('Start') adds 'Start' to logs array. Then notify('Alert') echoes 'Notify: Alert'. Then log('End') adds 'End' to logs.
Step 2: Understand print_r output
print_r outputs the logs array with 'Start' and 'End' entries after the echoed notify message.
Final Answer:
Notify: Alert
Array
(
[0] => Start
[1] => End
) -> Option A
Quick Check:
Echo notify first, then print logs array [OK]
Hint: Echo outputs appear before print_r array display [OK]
Common Mistakes:
Assuming print_r output appears before echo
Confusing array contents logged
Expecting syntax errors without missing methods
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.