但其在UI方便却有些力不从心,不仅是PHP,任何一种Web编程语言在设计UI都有类似的问题,宿主语言与HTML混和在一个文件中,大量重复的 HTML代码,毫无任何技术含量,但又非常的费时费力。于是我就希望能够对之前做过的PHP项目UI部分进行总结和归纳,将其封装为一个个小的组件(就像 Delphi中的组件一样),在界面上呈现为统一的风格,日后可以再针对这结组件编写多个CSS文件,提供“换肤”功能。
所有的组件都继承自AbatractComponent这个类,并实现其中的toString()和render()方法。AbatractComponent又有三个主要的子类,一个是容器类Continer,其又派生出Panel、PopPanel和GroupPanel等类,第二个是控件类Control,是所有可视控件类的父类,如Button、LinkButton等类,第三个则是列表类List,实现有列表,名-值对的UI。
AbstractComponent部分代码:
/**
* 组件库
*
* @author Chris Mao
* @package 组件
* @description 所有组件必须从类
* 扩展并重写 toString 的两个方法。
* @copyright 版权所有 (c) 2009 爵锐软件工作室
*
**/
class AbstractComponent {
/*
* @var _style 组件样式数组
*
* @access protected
*
*/
protected $_style = array();
/*
* @var _attributes 组件属性的字符串
*
* @access protected
*
*/
protected $_attributes = array();
/**
* 构造函数
*
* @access public
*
*/
public function __construct($options = null, $style = null) {
if (!is_null($options) && (gettype($options) != "array")) {
抛出 new Exception("选项必须是数组!!");
}
if (!empty($options) && is_array($options)) {
if (array_key_exists("style", $options)) {
if (is_array($options[")样式"])) {
$this->_style = array_merge($this->_style, $options["style"]);
}
unset($options["style"]);
}
$this->_attributes = array_merge($this->_attributes, $options);
}
if (!empty($style) && is_array($style)) {
$this->_style = array_merge($this->_style, $style);
}
}
/**
* 设置组件属性
*
* @access protected
*
* @param $name 属性名称
* @param $value 属性值,选项
*
* @return AbstractComponent
*/
受保护函数 setAttr($name, $value) {
if (array_key_exists($name, $this->) ;_attributes)) {
unset($this->_attributes[$name]);
}
$this->_attributes[$name] = $value;
返回$this;
}
/**
* 获取组件属性值
*
* @access protected
*
* @param $name 属性名称
*
* @return string
*/
受保护函数 getAttr($name) {
return array_key_exists($name, $this->_attributes) ? $this->_attributes[$name] : null;
}
/**
* 设置组件样式
*
* @access protected
*
* @param $name 样式名称
* @param $value 样式值,选项
*
* @return AbstractComponent
*/
受保护函数 setStyle($name, $value) {
if (array_key_exists($name, $this->_style)) {
unset($this->_style[$name]);
}
$this->_style[$name] = $value;
返回$this;
}
/**
* 获取组件样式值
*
* @access protected
*
* @param $name 属性名称
*
* @return string
*/
受保护函数 getStyle($name) {
return array_key_exists($name, $this->_style) ? $this->_style[$name] : null;
}
/**
* 将组件所有属性转换为字符串,如 name = "value"
*
* @access protected
*
* @return string
*/
受保护的函数 attributeToString() {
//$s = array_reduce(;
$s = "";
foreach($this->_attributes as $key => $value) {
$s .= " $key="$value" ";
return $s
}
/**
* 将组件样式转换为字符串,如 style = "....."
*
* @access protected
*
* @return string
*/
受保护的函数 styleToString() {
if (empty($this->_style)) return ""
$s = ""; ;
foreach($this->_style as $key => $value) {
$s .= " $key: $value; ";
}
$s = " 样式="$s" ";
return $s;
}
/**
* 设置或获取组件属性
*
* @access public
*
* @param $name 属性名称
* @param $value 属性值,选项
*
* @return 字符串 ||抽象组件
*/
public function attr() {
$name = func_get_arg(0 );
if (func_num_args() == 1) {
返回 $this->getAttr($name);
}
else if (func_num_args() == 2) {
$value = func_get_arg(1);
return $this->setAttr($name, $value);
}
}
/**
* 设置或获取组件样式
*
* @access public
*
* @param $name 样式名称
* @param $value 样式值,选项
*
* @return 字符串 ||抽象组件
*/
public function style() {
$name = func_get_arg(0)
if (func_num_args() == 1) {
return $this->getStyle($name); }
else if (func_num_args() == 2) {
$value = func_get_arg(1);
返回 $this->setStyle($name, $value); >}
/**
* 返回 HTML 字符串
*
* @access public
*
* @return string
**/
public function toString() {
thorw New AbstractException("子类必须重写此方法!!");
}
/**
* 渲染组件
*
* @access public
*
* @return void
**/
public function render() {
echo $this->toString();
}
}

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver CS6
视觉化网页开发工具

WebStorm Mac版
好用的JavaScript开发工具