/
Adapter_pattern_example.php
76 lines (66 loc) · 1.57 KB
/
Adapter_pattern_example.php
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
interface A{
public function setFirstName($fname);
public function setLastName($lname);
public function getFirstName();
public function getLastName();
}
interface B{
public function setName($name);
public function getName();
}
class Adaptee implements B{
private $name;
public function setName($name){
$this->name = $name;
}
public function getName(){
return $this->name;
}
}
//creating a B-to-A object adapter
class Adapter implements A{
/**
* A reference to another Adaptee object
* @var Adaptee
*/
private $adaptee;
/**
* First name indentifier
* @var string
*/
private $firstName;
/**
* Last name indentifier
* @var string
*/
private $lastName;
public function __construct(B $adapt){
$this->setAdaptee($adapt);
}
private function setAdaptee(B $adapt){
$this->adaptee = $adapt;
}
public function setFirstName($fname){
$this->firstName = $fname;
}
public function setLastName($lname){
$this->lastName = $lname;
}
public function getFirstName(){
$temp = explode(" ", $this->adaptee->getName());
$this->firstName = $temp[0];
return $this->firstName;
}
public function getLastName(){
$temp = explode(" ", $this->adaptee->getName());
$this->lastName = $temp[1];
return $this->lastName;
}
}
$adaptee = new Adaptee();
$adaptee->setName("Nataliya Nikolaewa");
$adapter = new Adapter($adaptee);
echo "Fullname: " . $adaptee->getName() . "<br>";
printf("First name: %s <br>", $adapter->getFirstName());
printf("Last name: %s <br>", $adapter->getLastName());