<?php
// используется для вывода чистого XML документа, вся разметка должна формироваться скриптом
class c_page_JSON
{ // конструктор
  var $send_header=1 ;

  function __construct(&$options=array())
  {
     $this->init() ;
  }

  function init(&$options=array())
  { $this->on_send_header_before() ;
  }

  // обязательно отправка заголовка через выделенный метод, так как в случае yandex-market может потребоваться вывод в форме html при проверке
  function on_send_header_before()
  {
	  if ($this->send_header)  header("Content-type: application/json;charset=UTF-8") ;
  }

  function show()
   {  ob_start() ;
      $result=[] ;
   	  if ($_POST['cmd']) $result=$this->exec_cmd($_POST['cmd']) ;  // выполняем переданную команду
   	  else if ($_GET['cmd']) $result=$this->exec_cmd($_GET['cmd']) ;  // выполняем переданную команду
       $text=ob_get_clean() ;
       if ($text) $result['debug']=$text ;
      $this->output_JSON($result) ;
   }

  // по умолчанию ищем метод для команды только в текущем классе
  function exec_cmd($cmd)
  {   if (method_exists($this,$cmd)) { $result=$this->$cmd() ; }     // ищем метод в c_ajax::---cmd---
      else $result[]=array('error'=>1,'text'=>'method not found: '.$cmd.' '.print_r($_POST,true)) ;
      return($result) ;
  }

  function output_JSON($arr)
  {
	  $text_json_out=json_encode($arr,JSON_UNESCAPED_UNICODE) ;
	  echo $text_json_out ;
  }
  

    
}

?>