-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinterfaces.php
More file actions
34 lines (31 loc) · 916 Bytes
/
interfaces.php
File metadata and controls
34 lines (31 loc) · 916 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
// functions should be public
// contain only abstract methods (no implementation allowed)
// no constructor allowed
// supports multiple inheritance
interface Logger {
public function execute($message);
}
class FileLogger implements Logger {
public function execute($message) {
var_dump('msg logging to file: ' . $message);
}
}
class DatabaseLogger implements Logger {
public function execute($message) {
var_dump('msg logging to database: ' . $message);
}
}
class UserController {
protected $logger;
public function __construct(Logger $logger) {
$this->logger = $logger;
}
public function show() {
$user = 'JohnDoe';
$this->logger->execute($user);
}
}
$controller = new UserController(new FileLogger);
$controller->show();
?>