fork download
  1. <?php
  2. interface JSONable {
  3. public function getAsJSON();
  4. }
  5.  
  6. interface XMLable {
  7. public function getAsXML();
  8. }
  9.  
  10. interface Arrayable {
  11. public function getAsArray();
  12. }
  13.  
  14. class DataWrapper {
  15. protected $_data;
  16.  
  17. public function __construct($data)
  18. {
  19. $this->_data = $data;
  20. }
  21. }
  22. class MuhArticles extends DataWrapper implements XMLable, JSONable{
  23.  
  24. public function getAsJSON()
  25. {
  26. return json_encode($this->_data);
  27. }
  28.  
  29. public function getAsXML()
  30. {
  31. return '<hui>';
  32. }
  33.  
  34. /*
  35.   * это для самого частого вывода, например в шаблонах
  36.   */
  37. public function __toString()
  38. {
  39. return 'default output method';
  40. }
  41.  
  42. }
  43.  
  44. /**
  45.  * Usages
  46.  */
  47. $articles = new MuhArticles(['hui' => 'pizda', 'dzigurda']);
  48.  
  49. echo $articles; //'default output method'
  50.  
  51. if ($articles instanceof XMLable) {
  52. echo $articles->getAsXML(); //'<hui>'
  53. }
  54.  
  55. if ($articles instanceof JSONable) {
  56. echo $articles->getAsJSON(); //ну в json вернет кароч
  57. }
  58.  
  59. // А теперь паси какая телега
  60.  
  61. class YOBA_Enterprise_Exchange{
  62.  
  63. public function sendXml(XMLable $data)
  64. {
  65. $this->send($data->getAsXML());
  66. }
  67. }
  68.  
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
default output method<hui>{"hui":"pizda","0":"dzigurda"}