- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
// Итак, определим класс Namer.
class Namer {
var $name;
var $surname;
function getName() { return $this->name; }
function getSurname() { return $this->surname; }
}
// Как видим, интерфейсная часть полностью определена. Осталось реализовать два механизма обработки входной строки. Сделаем это мы в двух классах-наследниках SpaceNamer и CommaNamer.
//// класс для обработки строки в формате "имя фамилия"
class SpaceNamer extends Namer {
function SpaceNamer($full_name) {
$splitter_pos = strpos($full_name, ' '); // находим пробел
$this->name = substr($full_name, 0, $splitter_pos); // все, что до пробела - это имя
$this->surname = substr($full_name, $splitter_pos+1); // после пробела - фамилия
}
}
//// класс для обработки строки в формате "фамилия,имя"
class CommaNamer extends Namer {
function CommaNamer($full_name) {
$splitter_pos = strpos($full_name, ','); // находим запятую
$this->name = substr($full_name, $splitter_pos+1); // все, что до запятой - это фамилия
$this->surname = substr($full_name, 0, $splitter_pos); // после запятой - имя
}
}
Анонимус 01.11.2010 01:59 # +3
по Вашему лучше было бы сделать ифейс с геттерами и копипастить свойство и геттер в каждый класс?
Setti 01.11.2010 09:32 # 0
Morgan 01.11.2010 16:11 # −2
Morgan 01.11.2010 16:20 # −1
был бы очень кстати
Анонимус 01.11.2010 17:46 # 0
Когда нить Вы это поймете
Lure Of Chaos 02.11.2010 02:33 # +1
я вон еще вчера дал решение без всякой копипасты: 1 класс с 2 полями и соотв. геттерами и 2 варианта 1 метода толщиной в 1 строку. По моему изящнее и придумать нельзя.
istem 02.11.2010 08:50 # 0
Lure Of Chaos 02.11.2010 11:29 # 0
Lure Of Chaos 01.11.2010 02:51 # 0
Lure Of Chaos 01.11.2010 02:54 # 0
sectus 01.11.2010 03:38 # +1
Morgan 01.11.2010 16:11 # −2
sectus 01.11.2010 18:29 # +1
Lure Of Chaos 02.11.2010 02:36 # −2