Форум → Программирование → PHP для идиотов → PHP и ООП → Интерфейсы
Интерфейсы
-
19 декабря 2008 г. 21:28, спустя 31 минуту 13 секунд
очень сложный вопрос)
обычно приводят в пример - геометрические фигуры. а вообще интерфейсы для меня - как условия, который ОБЯЗАН выолнять класс в реализацииСапожник без сапог -
19 декабря 2008 г. 21:34, спустя 6 минут 38 секунд
очень сложный вопрос)
обычно приводят в пример - геометрические фигуры. а вообще интерфейсы для меня - как условия, который ОБЯЗАН выолнять класс в реализации
я тоже так понимаю,но на практике применять не приходилось -
19 декабря 2008 г. 23:10, спустя 1 час 35 минут 17 секунд
боюсь что и не придется. это полезно в оочень крупных проектах на ооп, а я боюсь что такой проект если лаже написать, придется переписать ибо все будет втыкаться неимоверно. да и такие вещи нужны больше для работы с вещами, с которыми уже есть средства работы :) INumerable, ISocket и тп )
очень сложный вопрос)
обычно приводят в пример - геометрические фигуры. а вообще интерфейсы для меня - как условия, который ОБЯЗАН выолнять класс в реализации
я тоже так понимаю,но на практике применять не приходилосьСапожник без сапог -
19 декабря 2008 г. 23:35, спустя 25 минут 13 секунд
Реально вот интерфейсы юзать не пришлось, хватает абстрактных классов с головой. -
19 декабря 2008 г. 23:59, спустя 24 минуты 6 секунд
Реально вот интерфейсы юзать не пришлось, хватает абстрактных классов с головой.
Можно реальный пример где абстрактный класс удобен?? -
20 декабря 2008 г. 0:01, спустя 1 минуту 45 секунд
http://s-a-p.in/interactive/theme/polymorphism-for-beginners
Только там он упрощенный, но вообще в такой ситуации очень даже удобно. -
20 декабря 2008 г. 0:01, спустя 27 секунд
например класс работы с бд, есть функции getall, insert, select, которые используют функции реализации конечного класс например мускуля $this->fetch, $this->query и тп :)
Реально вот интерфейсы юзать не пришлось, хватает абстрактных классов с головой.
Можно реальный пример где абстрактный класс удобен??
нупример работы с IO - сокеты, процессы, файлы и тп например кеширование :) например шаблонизаторы .. много чего например)Сапожник без сапог -
-
20 декабря 2008 г. 16:22, спустя 9 минут 54 секунды
готичный пример<?php
/******************************************************************************
* Интерфейс "смертный"
*/
interface Killable
{
public function kill();
}
/******************************************************************************
* Класс-убийца
*/
class Killer
{
private $victims = array();
/**
* Добавляет жертву в список смертников
*/
public function add(Killable $v)
{
$this->victims[] = $v;
}
/**
* Убивает всех нафиг
*/
public function killAll()
{
foreach ($this->victims as & $v) {
$v->kill();
}
}
}
/******************************************************************************
* Киса
*/
class Cat
implements Killable
{
public function kill()
{
echo 'Мяу<br>';
}
}
/******************************************************************************
* Собачко
*/
class Dog
implements Killable
{
public function kill()
{
echo 'Гав<br>';
}
}
/******************************************************************************
* Хуман
*/
class Human
implements Killable
{
public function kill()
{
echo 'АААА!!!!<br>';
}
}
/******************************************************************************
* дункан маклауд из клана маклаудов
*/
class DuncanMacLeod extends Human
{
public function kill()
{
throw new Exception('Я ж бессмертный, ёпте!');
}
}
// тест
$klr = new Killer();
$klr->add(new Cat());
$klr->add(new Dog());
$klr->add(new Human());
$klr->add(new DuncanMacLeod());
try {
$klr->killAll();
} catch (Exception $e) {
echo $e->getMessage();
}
?> -
20 декабря 2008 г. 16:44, спустя 22 минуты 11 секунд
public function killAll()
{
foreach ($this->victims as $v) {
$v->kill();
}
}
тут проблемы с выделением памяти надо перед $v амперсанд ставить -
20 декабря 2008 г. 16:50, спустя 5 минут 54 секунды
тут проблемы с выделением памяти надо перед $v амперсанд ставить
ok
Пожалуйста, авторизуйтесь, чтобы написать комментарий!