- 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); // после запятой - имя
}
}
по Вашему лучше было бы сделать ифейс с геттерами и копипастить свойство и геттер в каждый класс?
был бы очень кстати
Когда нить Вы это поймете
я вон еще вчера дал решение без всякой копипасты: 1 класс с 2 полями и соотв. геттерами и 2 варианта 1 метода толщиной в 1 строку. По моему изящнее и придумать нельзя.