А пожалуйста
<?php
class Bathroom_Action
{
protected $sex = array('boy' => 'standing',
'girl' => 'sitting',
'dog' => 'liftingFoot',
);
public function __call($name, $arguments)
{
$name = strtolower($name);
$methods = !empty($this->sex[$name]) ? $this->sex[$name] : 'inPants';
$methods .= 'Pee';
return $this->$methods();
}
public function standingPee()
{
return 'делаем это стоя';
}
public function sittingPee()
{
return 'леди не культурно об этом говорить';
}
public function liftingFootPee()
{
return 'подняв ногу';
}
public function inPantsPee()
{
return 'в штаны';
}
}
class Bathroom
{
public function allPee($pee)
{
echo $pee;
echo '<br>';
echo 'Пшшшш-шш-буль-буль';
}
}
class Boy
{
public function pee($method)
{
return $method;
}
}
class Girl
{
public function pee($method)
{
return $method;
}
}
$room = new Bathroom();
$act = new Bathroom_Action();
$children = array(
'Boy',
'Girl',
);
foreach($children as $child) {
$obj = new $child();
$method = $act->$child();
$room->allPee($method);
echo '<br>';
}
Тут нет абстракций, нет наследований,нет привязок, нет связанностей.
Вот скажите мне, поборники ООП. Сможете ли вы скриптом
slobotsky.denis заставить девочку пописить стоя? Или подняв ногу? :D
А сможете ли заставить её не пописить, а покакать? Для этого вам придется заставить какать и мальчика и собачку.
А сможет ли вообще пописить Винни Пух? Если он не класс, а функция?
А сможете ли заставить писить кого-то в другом
городе приложении?
А я вот смогу. Ибо это библиотека. Она производит действие (писить), а не заставляет производить действие объект (собачку). Поэтому я могу подключить другую либу, и все обкакаются. А могу эту либу взять и утащить куда угодно, где кому то невтерпеж.
Это гибкость. Это слабая связанность, это KISS, это
императив.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.