PHP高级对象构建 多个构造函数的使用


Posted in PHP onFebruary 05, 2012

下面就用一段代码示例来演示一下PHP高级对象构建中的使用多个构造函数进行对象构建的原理。

<?php 
class classUtil {//这是一个参数处理的类 
public static function typeof($var){ 
if (is_object($var)) return get_class($var);//如果是对象,获取类名 
if (is_array($var)) return "array";//如果是数组,返回"array" 
if (is_numeric($var)) return "numeric";//如果是数字,返回"numeric" 
return "string";//字符串返回 "string" 
} 
public static function typelist($args){ 
return array_map(array("self","typeof"),$args);//数组循环通过调用self::typeof处理$args中的每个元素 
} 
public static function callMethodForArgs($object,$args,$name="construct"){ 
$method=$name."_".implode("_",self::typelist($args));//implode 是把数组元素用"_"连接成一个字符串 
if (!is_callable(array($object,$method))){//is_callable()函数测试$object::$method是不是可调用的结构 
echo sprintf("Class %s has no methd '$name' that takes". 
"arguments (%s)",get_class($object),implode(",",self::typelist($args))); 
call_user_func_array(array($object,$method),$args);//call_user_func_array函数调用$object::$method($args) 
} 
} 
} 
class dateAndTime { 
private $timetamp; 
public function __construct(){//自身的构造函数 
$args=func_get_args();//获取参数 
classUtil::callMethodForArgs($this,$args);//调用参数处理类的方法 
} 
public function construct_(){//参数为空的时候 
$this->timetamp=time(); 
} 
public function construct_dateAndTime($datetime){//为类自身的时候 
$this->timetamp=$datetime->getTimetamp(); 
} 
public function construct_number($timestamp){//为数字的时候 
$this->timetamp=$timestamp; 
} 
public function construct_string($string){//为时间型字符串时候 
$this->timetamp=strtotime($string); 
} 
public function getTimetamp(){//获取时间戳的方法 
return $this->timetamp; 
} 
} 
?>

以上方法,就说明了多个构造函数的使用方法,其实,很简单,主要是对参数进行了处理,不管是参数是字符,还是数字,还是类,都先进了不同的处理,这样就加大了代码的灵活性。
PHP 相关文章推荐
PHP中输出转义JavaScript代码的实现代码
Apr 22 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
Jul 22 PHP
php实现的获取网站备案信息查询代码(360)
Sep 23 PHP
php使用base64加密解密图片示例分享
Jan 20 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
详解WordPress开发中get_header()获取头部函数的用法
Jan 08 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 PHP
php获取linux命令结果的实例
Mar 13 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 PHP
你真的了解PHP中的引用符号(&)吗
May 12 PHP
PHP高级对象构建 工厂模式的使用
Feb 05 #PHP
PHP备份数据库生成SQL文件并下载的函数代码
Feb 05 #PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 #PHP
php 搜索框提示(自动完成)实例代码
Feb 05 #PHP
PHP持久连接mysql_pconnect()函数使用介绍
Feb 05 #PHP
PHP测试程序运行时间的类
Feb 05 #PHP
PHP设计模式 注册表模式
Feb 05 #PHP
You might like
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
Nginx下配置codeigniter框架方法
2015/04/07 PHP
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
Three.JS实现三维场景
2018/12/30 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
Django的性能优化实现解析
2019/07/30 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
HTML5到底会有什么发展?HTML5的前景展望
2015/07/07 HTML / CSS
HTML5 Canvas实现放大镜效果示例
2020/03/25 HTML / CSS
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
在线课程:Skillshare
2019/04/02 全球购物
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
材料员岗位职责
2014/03/13 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
学习经验交流会策划书
2015/11/02 职场文书
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js