<?php
interface JSONable {
public function getAsJSON();
}
interface XMLable {
public function getAsXML();
}
interface Arrayable {
public function getAsArray();
}
class DataWrapper {
protected $_data;
public function __construct($data)
{
$this->_data = $data;
}
}
class MuhArticles extends DataWrapper implements XMLable, JSONable{
public function getAsJSON()
{
}
public function getAsXML()
{
return '<hui>';
}
/*
* это для самого частого вывода, например в шаблонах
*/
public function __toString()
{
return 'default output method';
}
}
/**
* Usages
*/
$articles = new MuhArticles(['hui' => 'pizda', 'dzigurda']);
echo $articles; //'default output method'
if ($articles instanceof XMLable) {
echo $articles->getAsXML(); //'<hui>'
}
if ($articles instanceof JSONable) {
echo $articles->getAsJSON(); //ну в json вернет кароч
}
// А теперь паси какая телега
class YOBA_Enterprise_Exchange{
public function sendXml(XMLable $data)
{
$this->send($data->getAsXML());
}
}