See Release Notes
Long Term Support Release
1 <?php 2 3 /** 4 * Factory for token generation. 5 * 6 * @note Doing some benchmarking indicates that the new operator is much 7 * slower than the clone operator (even discounting the cost of the 8 * constructor). This class is for that optimization. 9 * Other then that, there's not much point as we don't 10 * maintain parallel HTMLPurifier_Token hierarchies (the main reason why 11 * you'd want to use an abstract factory). 12 * @todo Port DirectLex to use this 13 */ 14 class HTMLPurifier_TokenFactory 15 { 16 // p stands for prototype 17 18 /** 19 * @type HTMLPurifier_Token_Start 20 */ 21 private $p_start; 22 23 /** 24 * @type HTMLPurifier_Token_End 25 */ 26 private $p_end; 27 28 /** 29 * @type HTMLPurifier_Token_Empty 30 */ 31 private $p_empty; 32 33 /** 34 * @type HTMLPurifier_Token_Text 35 */ 36 private $p_text; 37 38 /** 39 * @type HTMLPurifier_Token_Comment 40 */ 41 private $p_comment; 42 43 /** 44 * Generates blank prototypes for cloning. 45 */ 46 public function __construct() 47 { 48 $this->p_start = new HTMLPurifier_Token_Start('', array()); 49 $this->p_end = new HTMLPurifier_Token_End(''); 50 $this->p_empty = new HTMLPurifier_Token_Empty('', array()); 51 $this->p_text = new HTMLPurifier_Token_Text(''); 52 $this->p_comment = new HTMLPurifier_Token_Comment(''); 53 } 54 55 /** 56 * Creates a HTMLPurifier_Token_Start. 57 * @param string $name Tag name 58 * @param array $attr Associative array of attributes 59 * @return HTMLPurifier_Token_Start Generated HTMLPurifier_Token_Start 60 */ 61 public function createStart($name, $attr = array()) 62 { 63 $p = clone $this->p_start; 64 $p->__construct($name, $attr); 65 return $p; 66 } 67 68 /** 69 * Creates a HTMLPurifier_Token_End. 70 * @param string $name Tag name 71 * @return HTMLPurifier_Token_End Generated HTMLPurifier_Token_End 72 */ 73 public function createEnd($name) 74 { 75 $p = clone $this->p_end; 76 $p->__construct($name); 77 return $p; 78 } 79 80 /** 81 * Creates a HTMLPurifier_Token_Empty. 82 * @param string $name Tag name 83 * @param array $attr Associative array of attributes 84 * @return HTMLPurifier_Token_Empty Generated HTMLPurifier_Token_Empty 85 */ 86 public function createEmpty($name, $attr = array()) 87 { 88 $p = clone $this->p_empty; 89 $p->__construct($name, $attr); 90 return $p; 91 } 92 93 /** 94 * Creates a HTMLPurifier_Token_Text. 95 * @param string $data Data of text token 96 * @return HTMLPurifier_Token_Text Generated HTMLPurifier_Token_Text 97 */ 98 public function createText($data) 99 { 100 $p = clone $this->p_text; 101 $p->__construct($data); 102 return $p; 103 } 104 105 /** 106 * Creates a HTMLPurifier_Token_Comment. 107 * @param string $data Data of comment token 108 * @return HTMLPurifier_Token_Comment Generated HTMLPurifier_Token_Comment 109 */ 110 public function createComment($data) 111 { 112 $p = clone $this->p_comment; 113 $p->__construct($data); 114 return $p; 115 } 116 } 117 118 // vim: et sw=4 sts=4
title
Description
Body
title
Description
Body
title
Description
Body
title
Body