OOP?
Als je een API wilt maken, zal je misschien wel een grote website hebben. Ik raad je aan om grote websites volledig OOP te maken, maar hou ga je dan een API maken? Er zijn een paar mogelijkheden:
JsonSerializable
Deze interface is beschikbaar sinds PHP 5.4. Als je deze implement, wordt die automatisch aangesproken als je json_encode aanroept. Een voorbeeld zegt meer dan 1000 woorden:
Code (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
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
<?php
class User implements JsonSerializable {
private $name;
private $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function getName() {
return $this->name;
}
public function setName($name) {
$this->name = $name;
return $this;
}
public function getAge() {
return $this->age;
}
public function setAge($age) {
$this->age = $age;
return $this;
}
public function jsonSerialize() {
return array(
'name' => $this->name,
'age' => $this->age
);
}
}
header('Content-Type: application/json');
$user = new User('Koen', 15);
echo json_encode($user);
?>
class User implements JsonSerializable {
private $name;
private $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function getName() {
return $this->name;
}
public function setName($name) {
$this->name = $name;
return $this;
}
public function getAge() {
return $this->age;
}
public function setAge($age) {
$this->age = $age;
return $this;
}
public function jsonSerialize() {
return array(
'name' => $this->name,
'age' => $this->age
);
}
}
header('Content-Type: application/json');
$user = new User('Koen', 15);
echo json_encode($user);
?>
Geen PHP 5.4?
Als je geen PHP 5.4 hebt, kan je JsonSerializable helaas niet gebruiken. Er zijn andere vergelijkbare oplossingen die wel beschikbaar zijn, zoals het Symfony Serializer component. De Symfony Serializer is maar een klein component. Heb je meer nodig? Gebruik dan de JMSSerializer.
« vorige pagina | volgende pagina »