1 <?php 2 3 / * * 4 5 生成:<form id = "form"> <label> <b>用户名:</ b> <input name = "usrname"> </ label> </ form> 6 7 $ form = Html :: tag( 'form')-> attr(['id' => 'form']); 8 $ label = Html :: tag( 'label'); 9 $ b = Html :: tag( 'b'); 10 $ input = Html :: tag( 'input')-> attr( 'name'、 'usrname'); 11 12 echo $ form-> add($ label-> add($ b-> add( '用户名:'))-> add($ input))-> make(); ; 19 保護された $ attr = []; 20 保護された $ tag = '' ; 21 保護された $ elements = []; 22 public $ closings = ['br'、 'hr'、 'input'、 'source'、 'area'、 'base'、 'link'、 'img'、 'meta'、 'basefont'、 'param'、 'col'、 'frame'、 'embed' ]; 23 24 保護された 関数 __construct($ tag ){ 25 26 $ this- > tag = $ tag ; $ value ){ 30 31 return new static($ value ); 32 } 33 34 public function attr($ name、$ value = '' ){ 35 36 if(is_array($ name )){ 37 $ this- > attr = $ name + $ this- > attr; 38 } else { 39 $ this-> attr [ $ name ] = $ value ; 40 } 41 42 リターンは 、この$ ; 43 } 44 45 public function add($ element ){ 46 47 $ this- > elements [] = $ element ; 48 $ thisを返し ます。 49 } 50 51 パブリック関数メイク(){ 52 53 $ ATTR = array_reduce(array_keys($この - > ATTR)、関数($キャリー、$アイテム){ 54 $キャリー。= ''。$アイテム。 '='。 '"'。$ This- > attr [ $ item ]。 '"' ; 55 return $ carry ; 56 }); 57 58 $ html = '<' 。$ this- > tag。$ attr。 '>' ; 59 // 子要素を反復処理してmakeメソッドを呼び出し、再帰的な 60 foreach($ this- >要素は $ element ){ 61 62 if(is_object($ element )){ 63 $ element =$ element- > make(); 64 } 65 $ html。= $ element ; 66 } 67 68 if(!in_array($ this- > tag、$ this- > closings))$ html。= '</'。$ this-> tag。 '>' ; 69 70は $ htmlを返し ます。 71 72 } 73 74 75 }