forked from GNUsocial/gnu-social
		
	
		
			
	
	
		
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?php | ||
|  | /** | ||
|  |  * Part of XML_XRD | ||
|  |  * | ||
|  |  * PHP version 5 | ||
|  |  * | ||
|  |  * @category XML | ||
|  |  * @package  XML_XRD | ||
|  |  * @author   Christian Weiske <cweiske@php.net> | ||
|  |  * @license  http://www.gnu.org/copyleft/lesser.html LGPL | ||
|  |  * @link     http://pear.php.net/package/XML_XRD | ||
|  |  */ | ||
|  | 
 | ||
|  | require_once 'XML/XRD/Serializer/Exception.php'; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Serialization dispatcher - loads the correct serializer for saving XRD data. | ||
|  |  * | ||
|  |  * @category XML | ||
|  |  * @package  XML_XRD | ||
|  |  * @author   Christian Weiske <cweiske@php.net> | ||
|  |  * @license  http://www.gnu.org/copyleft/lesser.html LGPL | ||
|  |  * @version  Release: @package_version@ | ||
|  |  * @link     http://pear.php.net/package/XML_XRD | ||
|  |  */ | ||
|  | class XML_XRD_Serializer | ||
|  | { | ||
|  |     /** | ||
|  |      * XRD data storage | ||
|  |      * | ||
|  |      * @var XML_XRD | ||
|  |      */ | ||
|  |     protected $xrd; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Init object with xrd object | ||
|  |      * | ||
|  |      * @param XML_XRD $xrd Data storage the data are fetched from | ||
|  |      */ | ||
|  |     public function __construct(XML_XRD $xrd) | ||
|  |     { | ||
|  |         $this->xrd = $xrd; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Convert the XRD data into a string of the given type | ||
|  |      * | ||
|  |      * @param string $type File type: xml or json | ||
|  |      * | ||
|  |      * @return string Serialized data | ||
|  |      */ | ||
|  |     public function to($type) | ||
|  |     { | ||
|  |         return (string)$this->getSerializer($type); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Creates a XRD loader object for the given type | ||
|  |      * | ||
|  |      * @param string $type File type: xml or json | ||
|  |      * | ||
|  |      * @return XML_XRD_Loader | ||
|  |      */ | ||
|  |     protected function getSerializer($type) | ||
|  |     { | ||
|  |         $class = 'XML_XRD_Serializer_' . strtoupper($type); | ||
|  |         $file = str_replace('_', '/', $class) . '.php'; | ||
|  |         include_once $file; | ||
|  |         if (class_exists($class)) { | ||
|  |             return new $class($this->xrd); | ||
|  |         } | ||
|  | 
 | ||
|  |         throw new XML_XRD_Serializer_Exception( | ||
|  |             'No serializer for type "' . $type . '"', | ||
|  |             XML_XRD_Loader_Exception::NO_LOADER | ||
|  |         ); | ||
|  |     } | ||
|  | } | ||
|  | ?>
 |