-
Notifications
You must be signed in to change notification settings - Fork 0
/
index2.php
39 lines (28 loc) · 1.02 KB
/
index2.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
<?php
// позднее связывание
// интерпретатор ищет вызываемые методы, сначала из класса где они вызываются,
// а потом поднимается вверх до основного родительского класса, пока не найдёт метод
abstract class DomainObject{
private $group;
public function __construct(){
$this->group = static::getGroup(); // обращается к статичному методу дочернего класса
}
public static function create(){
return new static(); // создаёт обьект доченего класса
}
static function getGroup(){
return "default";
}
}
class User extends DomainObject{
}
class Document extends DomainObject{
static function getGroup(){
return "document";
}
}
class SpreadSheet extends Document{
}
var_dump(User::create());
var_dump(Document::create());
var_dump(SpreadSheet::create());