您的位置:首页 > 编程语言 > PHP开发

自己写的一个PHP面向对象方式的页面生成库(同时支持Web和Wap)

2012-11-11 23:41 666 查看
自己写的一个PHP面向对象方式的页面生成库,还有很多未完善的,抛砖引玉而已,边用边完善吧。

下面是类库的代码:

<?php

/*
 * Filename: uis.php
 * Created on 2012-11-8
 * Created by RobinTang
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
	class UIElement {
		public static $pretab = " ";
		public $tag;
		public $befor;
		public $childs;
		public $attrs;
		public function __construct($t, $atts=false, $chs=false) {
			$this->tag = $t;
			($atts && $this->attrs = $atts) || $this->attrs = array();
			($chs && $this->childs = $chs) || $this->childs = array ();
		}
		public function add($e) {
			array_push($this->childs, $e);
			return $this;
		}
		public function att($k, $v){
			$this->attrs[$k] = $v;
			return $this;
		}
		public function toPage($pre = null) {
			$cs = '';
			$pr = $pre . UIElement :: $pretab;
			$at = '';
			$res = '';
			if(count($this->attrs)){
				$keys = array_keys($this->attrs);
				foreach($keys as $k){
					$v = $this->attrs[$k];
					$at .= " $k='$v'";
				}
			}
			
			if(count($this->childs)){
				foreach ($this->childs as $e) {
					if(!is_object($e)){
						$cs .= $pr.$e . "\r\n";
					}
					else if(!is_null($e)) {
						$cs .= $e->toPage($pr) . "\r\n";
					}
				}
				$res .= "$pre<$this->tag$at>\r\n$cs$pre</$this->tag>";
			}
			else{
				$res .= "$pre<$this->tag$at/>";
			}
			return $this->befor? $this->befor . "\r\n" . $res:$res;
		}
	}
	function UIPage($iswml = false){
		$body = new UIElement('body');
		$head = new UIElement('head');
		$title = new UIElement('title');
		$head->add($title);
		$page = new UIElement('html');
		$page->add($head);
		if($iswml){
			$page->befor = '<?xml version="1.0" encoding="utf-8"?>'."\r\n".'<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">';
			$page->att('xmlns', 'http://www.w3.org/1999/xhtml');
			$wml = new UIElement('wml');
			$page->add($wml->add($body));
		}
		else{
			$page->befor = '<!DOCTYPE html>';
			$page->add($body);
		}
		
		
		
		$page->title = $title;
		$page->head = $head;
		$page->body = $body;
		return $page;
	}
	function UIForm($method='GET', $action=false) {
		if($action){
			return new UIElement('form', array('method'=>$method, 'action'=>$action));
		}
		else{
			return new UIElement('form', array('method'=>$method));
		}
	}
	function UIInput($name, $type='text', $val=false) {
		$e = new UIElement('input', array('name'=>$name, 'type'=>$type));
		$e && $e->att('value', $val);
		return $e;
	}
	function UIDiv($att = false, $chs = false){
		return new UIElement('div', $att, $chs);
	}
	function UIBr($att = false){
		return new UIElement('br', $att);
	}
	function UITable($att = false){
		return new UIElement('table', $att);
	}
	function UITr($chs=false, $att = false){
		$e = new UIElement('tr', $att);
		$chs && $e->childs = $chs; 
		return $e;
	}
	function UITd($ch=false, $att = false, $colspan = false){
		$e = new UIElement('td', $att);
		$ch && $e->add($ch);
		$colspan && $e->att('colspan', $colspan);
		return $e;
	}
	function UITh($ch=false, $att = false, $colspan = false){
		$e = new UIElement('th', $att);
		$ch && $e->add($ch);
		$colspan && $e->att('colspan', $colspan);
		return $e;
	}
	function UIA($title='', $href = false, $att = false){
		if(!$href)
			$href = $title;
		$e = new UIElement('a', $att);
		$e->att('href', $href);
		$e->add($title);
		return $e;
	}
	function uif_align($e, $al = 'center'){
		$e->att('align', $al);
		return $e;
	}
?>


下面是使用的例子,完成一个简单的百度搜索:

<?php
/*
 * Filename: demo.php
 * Created on 2012-11-11
 * Created by RobinTang
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
	include_once('uis.php');
	
	
	$pag = UIPage(true); // true表示输出的是web页面,如果是false则输出wap页面
	$pag->title->add('测试页面');
	
	$div = UIDiv();
	$pag->body->add($div);
	
	uif_align($div);	//居中对齐
	$div->add('HelloWorld');
	$div->add(UIBr());
	
	// 下面创建一个表达
	$form = UIForm('GET','http://www.baidu.com/s');
	$form->add(UIInput('wd'));	// 文本框
	$form->add(UIInput('submit', 'submit', '搜索'));	// 提交按钮	
	$div->add($form);	// 添加到div中

	
	
	// 最后输出
	header("Content-Type: text/html; charset=UTF-8");
	echo $pag->toPage();
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: