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
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								?>
							 |