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 调用远程url的六种方法小结
Nov 02 PHP
php数组(array)输出的三种形式详解
Jun 05 PHP
PHP中使用smarty生成静态文件的例子
Apr 24 PHP
PHP多进程编程实例
Oct 15 PHP
PHP间隔一段时间执行代码的方法
Dec 02 PHP
php中简单的对称加密算法实现
Jan 05 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
thinkphp5使用无限极分类
Feb 18 PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 PHP
PHP dirname功能及原理实例解析
Oct 28 PHP
PHP策略模式写法
Apr 01 PHP
Linux系统下安装PHP7.3版本
Jun 26 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
新浪新闻小偷
2006/10/09 PHP
php用数组返回无限分类的列表数据的代码
2010/08/08 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
fetch 如何实现请求数据
2018/12/20 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
python版学生管理系统
2018/01/10 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
2019/08/01 Python
python list多级排序知识点总结
2019/10/23 Python
python 实现return返回多个值
2019/11/19 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
python 实现批量图片识别并翻译
2020/11/02 Python
Python调用Redis的示例代码
2020/11/24 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
如何提高JDBC的性能
2013/04/30 面试题
2014年五一促销活动方案
2014/03/09 职场文书
大学生社团活动总结
2014/04/26 职场文书
初中毕业感言300字
2015/07/31 职场文书
pytorch 如何使用amp进行混合精度训练
2021/05/24 Python
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技