XML_Transformer
[ class tree: XML_Transformer ] [ index: XML_Transformer ] [ all elements ]

Source for file PHP.php

Documentation is available at PHP.php

  1. <?php
  2. //
  3. // +---------------------------------------------------------------------------+
  4. // | PEAR :: XML :: Transformer :: PHP Namespace Handler                       |
  5. // +---------------------------------------------------------------------------+
  6. // | Copyright (c) 2002-2005 Sebastian Bergmann <sb@sebastian-bergmann.de> and |
  7. // +---------------------------------------------------------------------------+
  8. // | This source file is subject to version 3.00 of the PHP License,           |
  9. // | that is available at http://www.php.net/license/3_0.txt.                  |
  10. // | If you did not receive a copy of the PHP license and are unable to        |
  11. // | obtain it through the world-wide-web, please send a note to               |
  12. // | license@php.net so we can mail you a copy immediately.                    |
  13. // +---------------------------------------------------------------------------+
  14. //
  15. // $Id$
  16. //
  17.  
  18. require_once 'XML/Transformer/Namespace.php';
  19.  
  20. /**
  21.  * Handler for the PHP Namespace.
  22.  *
  23.  * Example
  24.  *
  25.  * <code>
  26.  * <?php
  27.  * require_once 'XML/Transformer_OutputBuffer.php';
  28.  * require_once 'XML/Transformer/Namespace/PHP.php';
  29.  *
  30.  * $t = new XML_Transformer_OutputBuffer;
  31.  * $t->overloadNamespace('php', new XML_Transformer_Namespace_PHP);
  32.  * $t->start();
  33.  * ?>
  34.  * <html>
  35.  *   <body>
  36.  *     <dl>
  37.  *       <dd>Current time: <php:expr>time()</php:expr></dd>
  38.  *       <php:setvariable name="foo">bar</php:setvariable>
  39.  *       <dd>foo = <php:getvariable name="foo"/></dd>
  40.  *     </dl>
  41.  *
  42.  *     <php:namespace name="my">
  43.  *       <php:define name="tag">
  44.  *         <h1 align="$align">$content</h1>
  45.  *       </php:define>
  46.  *     </php:namespace>
  47.  *
  48.  *     <my:tag align="center">Some Text</my:tag>
  49.  *   </body>
  50.  * </html>
  51.  * </code>
  52.  *
  53.  * Output
  54.  *
  55.  * <code>
  56.  * <html>
  57.  *   <body>
  58.  *     <dl>
  59.  *       <dd>Current time: 1032158587</dd>
  60.  *       <dd>foo = bar</dd>
  61.  *     </dl>
  62.  *
  63.  *     <h1 align="center">Some Text</h1>
  64.  *   </body>
  65.  * </html>
  66.  * </code>
  67.  *
  68.  * @author      Sebastian Bergmann <sb@sebastian-bergmann.de>
  69.  * @author
  70.  * @copyright
  71.  * @license     http://www.php.net/license/3_0.txt The PHP License, Version 3.0
  72.  * @category    XML
  73.  * @package     XML_Transformer
  74.  */
  75.     // {{{ Members
  76.  
  77.     /**
  78.     * @var    boolean 
  79.     * @access public
  80.     */
  81.     var $defaultNamespacePrefix = 'php';
  82.  
  83.     /**
  84.     * @var    string 
  85.     * @access private
  86.     */
  87.     var $_defineName;
  88.  
  89.     /**
  90.     * @var    string 
  91.     * @access private
  92.     */
  93.     var $_namespace 'define';
  94.  
  95.     /**
  96.     * @var    string 
  97.     * @access private
  98.     */
  99.     var $_inNamespace = FALSE;
  100.  
  101.     /**
  102.     * @var    string 
  103.     * @access private
  104.     */
  105.     var $_namespaceClassDefinition '';
  106.  
  107.     /**
  108.     * @var    string 
  109.     * @access private
  110.     */
  111.     var $_variable '';
  112.  
  113.     // }}}
  114.     // {{{ function start_define($attributes)
  115.  
  116.     /**
  117.     * @param  array 
  118.     * @return string 
  119.     * @access public
  120.     */
  121.     function start_define($attributes{
  122.         if ($this->_inNamespace{
  123.             $this->_defineName $attributes['name'];
  124.         }
  125.         
  126.         $this->getLock();
  127.         return '';
  128.     }
  129.  
  130.     // }}}
  131.     // {{{ function end_define($cdata)
  132.  
  133.     /**
  134.     * @param  string 
  135.     * @return string 
  136.     * @access public
  137.     */
  138.     function end_define($cdata{
  139.         if (!$this->_inNamespace)
  140.             return '';
  141.  
  142.         $this->releaseLock();
  143.  
  144.         $this->_namespaceClassDefinition .= sprintf('
  145.           var $%s_attributes = array();
  146.  
  147.           function start_%s($att) {
  148.               $this->%s_attributes = $att;
  149.  
  150.               return "";
  151.           }
  152.  
  153.           function end_%s($content) {
  154.               foreach ($this->%s_attributes as $__k => $__v) {
  155.                   $$__k = $__v;
  156.               }
  157.               
  158.               $str = "%s";
  159.               return $str;
  160.           }',
  161.  
  162.           $this->_defineName,
  163.           $this->_defineName,
  164.           $this->_defineName,
  165.           $this->_defineName,
  166.           $this->_defineName,
  167.           addslashes($cdata)
  168.         );
  169.  
  170.         return '';
  171.     }
  172.  
  173.     // }}}
  174.     // {{{ function start_namespace($attributes)
  175.  
  176.     /**
  177.     * @param  array 
  178.     * @return string 
  179.     * @access public
  180.     */
  181.     function start_namespace($attributes{
  182.         $this->_inNamespace = TRUE;
  183.         $this->_namespace   $attributes['name'];
  184.  
  185.         $classname 'PEAR_XML_TRANSFORMER_NAMESPACE_PHP_' $this->_namespace;
  186.  
  187.         $this->_namespaceClassDefinition sprintf(
  188.           'class %s extends XML_Transformer_Namespace {',
  189.           $classname
  190.         );
  191.  
  192.         return '';
  193.     }
  194.  
  195.     // }}}
  196.     // {{{ function end_namespace($cdata)
  197.  
  198.     /**
  199.     * @param  string 
  200.     * @return string 
  201.     * @access public
  202.     */
  203.     function end_namespace($cdata{
  204.         $classname 'PEAR_XML_TRANSFORMER_NAMESPACE_PHP_' $this->_namespace;
  205.  
  206.         eval($this->_namespaceClassDefinition ' };');
  207.         $this->_namespaceClassDefinition '';
  208.  
  209.         $this->_transformer->overloadNamespace(
  210.           $this->_namespace,
  211.           new $classname,
  212.           TRUE
  213.         );
  214.  
  215.         $this->_namespace   '';
  216.         $this->_inNamespace = FALSE;
  217.  
  218.         return '';
  219.     }
  220.  
  221.     // }}}
  222.     // {{{ function start_expr($attributes)
  223.  
  224.     /**
  225.     * @param  array 
  226.     * @return string 
  227.     * @access public
  228.     */
  229.     function start_expr($attributes{}
  230.  
  231.     // }}}
  232.     // {{{ function end_expr($cdata)
  233.  
  234.     /**
  235.     * @param  string 
  236.     * @return string 
  237.     * @access public
  238.     */
  239.     function end_expr($cdata{
  240.         return eval('return ' $cdata ';');
  241.     }
  242.  
  243.     // }}}
  244.     // {{{ function start_logic($attributes)
  245.  
  246.     /**
  247.     * @param  array 
  248.     * @return string 
  249.     * @access public
  250.     */
  251.     function start_logic($attributes{}
  252.  
  253.     // }}}
  254.     // {{{ function end_logic($cdata)
  255.  
  256.     /**
  257.     * @param  string 
  258.     * @return string 
  259.     * @access public
  260.     */
  261.     function end_logic($cdata{
  262.         // This does not actually work in PHP 4.2.3,
  263.         // when using XML_Transformer_OutputBuffer.
  264.         // It should, though.
  265.         ob_start();
  266.         eval($cdata);
  267.         $buffer ob_get_contents();
  268.         ob_end_clean();
  269.         return $buffer;
  270.     }
  271.  
  272.     // }}}
  273.     // {{{ function start_getparameter($attributes)
  274.  
  275.     /**
  276.     * @param  array 
  277.     * @return string 
  278.     * @access public
  279.     */
  280.     function start_getparameter($attributes{
  281.         return isset($_GET[$attributes['name']]$_GET[$attributes['name']] '';
  282.     }
  283.  
  284.     // }}}
  285.     // {{{ function end_getparameter($cdata)
  286.  
  287.     /**
  288.     * @param  string 
  289.     * @return string 
  290.     * @access public
  291.     */
  292.     function end_getparameter($cdata{
  293.         return $cdata;
  294.     }
  295.  
  296.     // }}}
  297.     // {{{ function start_postparameter($attributes)
  298.  
  299.     /**
  300.     * @param  array 
  301.     * @return string 
  302.     * @access public
  303.     */
  304.     function start_postparameter($attributes{
  305.         return isset($_POST[$attributes['name']]$_POST[$attributes['name']] '';
  306.     }
  307.  
  308.     // }}}
  309.     // {{{ function end_postparameter($cdata)
  310.  
  311.     /**
  312.     * @param  string 
  313.     * @return string 
  314.     * @access public
  315.     */
  316.     function end_postparameter($cdata{
  317.         return $cdata;
  318.     }
  319.  
  320.     // }}}
  321.     // {{{ function start_cookievariable($attributes)
  322.  
  323.     /**
  324.     * @param  array 
  325.     * @return string 
  326.     * @access public
  327.     */
  328.     function start_cookievariable($attributes{
  329.         return isset($_COOKIE[$attributes['name']]$_COOKIE[$attributes['name']] '';
  330.     }
  331.  
  332.     // }}}
  333.     // {{{ function end_cookievariable($cdata)
  334.  
  335.     /**
  336.     * @param  string 
  337.     * @return string 
  338.     * @access public
  339.     */
  340.     function end_cookievariable($cdata{
  341.         return $cdata;
  342.     }
  343.  
  344.     // }}}
  345.     // {{{ function start_servervariable($attributes)
  346.  
  347.     /**
  348.     * @param  array 
  349.     * @return string 
  350.     * @access public
  351.     */
  352.     function start_servervariable($attributes{
  353.         return isset($_SERVER[$attributes['name']]$_SERVER[$attributes['name']] '';
  354.     }
  355.  
  356.     // }}}
  357.     // {{{ function end_servervariable($cdata)
  358.  
  359.     /**
  360.     * @param  string 
  361.     * @return string 
  362.     * @access public
  363.     */
  364.     function end_servervariable($cdata{
  365.         return $cdata;
  366.     }
  367.  
  368.     // }}}
  369.     // {{{ function start_sessionvariable($attributes)
  370.  
  371.     /**
  372.     * @param  array 
  373.     * @return string 
  374.     * @access public
  375.     */
  376.     function start_sessionvariable($attributes{
  377.         return isset($_SESSION[$attributes['name']]$_SESSION[$attributes['name']] '';
  378.     }
  379.  
  380.     // }}}
  381.     // {{{ function end_sessionvariable($cdata)
  382.  
  383.     /**
  384.     * @param  string 
  385.     * @return string 
  386.     * @access public
  387.     */
  388.     function end_sessionvariable($cdata{
  389.         return $cdata;
  390.     }
  391.  
  392.     // }}}
  393.     // {{{ function start_getvariable($attributes)
  394.  
  395.     /**
  396.     * @param  array 
  397.     * @return string 
  398.     * @access public
  399.     */
  400.     function start_getvariable($attributes{
  401.         return isset($GLOBALS[$attributes['name']]$GLOBALS[$attributes['name']] '';
  402.     }
  403.  
  404.     // }}}
  405.     // {{{ function end_getvariable($cdata)
  406.  
  407.     /**
  408.     * @param  string 
  409.     * @return string 
  410.     * @access public
  411.     */
  412.     function end_getvariable($cdata{
  413.         return $cdata;
  414.     }
  415.  
  416.     // }}}
  417.     // {{{ function start_setvariable($attributes)
  418.  
  419.     /**
  420.     * @param  array 
  421.     * @return string 
  422.     * @access public
  423.     */
  424.     function start_setvariable($attributes{
  425.         $this->_variable = isset($attributes['name']$attributes['name''';
  426.  
  427.         return '';
  428.     }
  429.  
  430.     // }}}
  431.     // {{{ function end_setvariable($cdata)
  432.  
  433.     /**
  434.     * @param  string 
  435.     * @return string 
  436.     * @access public
  437.     */
  438.     function end_setvariable($cdata{
  439.         if ($this->_variable != ''{
  440.             $GLOBALS[$this->_variable$cdata;
  441.             $this->_variable '';
  442.         }
  443.  
  444.         return '';
  445.     }
  446.  
  447.     // }}}
  448. }
  449.  
  450. /*
  451.  * vim600:  et sw=2 ts=2 fdm=marker
  452.  * vim<600: et sw=2 ts=2
  453.  */
  454. ?>

Documentation generated on Mon, 11 Mar 2019 15:48:10 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.