смайлик
class Smiley {
private $name;
private $data;
public function getName() {
return $this->name;
}
public function setName($name) {
$this->name = $name;
return $this;
}
public function getData() {
return $this->data;
}
public function setData($data) {
$this->data = $data;
return $this;
}
function __construct($name = null, $data = null) {
$this->name = $name;
$this->data = $data;
}
}
SmileyMapper
class SmileyMapper {
private $smilies = array();
public function addSmiley(Smiley $smiley) {
$this->smilies[] = $smiley;
return $this;
}
public function replaceSmileys($str) {
return str_replace(
array_map(
create_function(
'Smiley $item',
'return $item->getData();'
),
$this->smilies),
array_map(
create_function(
'Smiley $item',
'return $item->getName();'
),
$this->smilies),
$str
);
}
}
Пример
$text = 'i am passed :)';
$fn = array(
':)',
':-)',
';;)'
);
$rep = array(
'smily1',
'smily2',
'smily3'
);
$sm = new SmileyMapper();
foreach ($fn as $k => $v) {
$sm->addSmiley(new Smiley($rep[$k],$v));
}
echo $sm->replaceSmileys($text);