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 DataGrid 实现代码
Aug 12 PHP
PHP stripos()函数及注意事项的分析
Jun 08 PHP
php实现httpclient类示例
Apr 08 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
PHP实现的多彩标签效果代码分享
Aug 21 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
Nov 15 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
PHP的Socket网络编程入门指引
Aug 11 PHP
php如何实现只替换一次或N次
Oct 29 PHP
微信利用PHP创建自定义菜单的方法
Aug 01 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 PHP
php屏蔽错误及提示的方法
May 10 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
人族 Terran 基本策略
2020/03/14 星际争霸
PHP 数组遍历顺序理解
2009/09/09 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
比较完整的微信开发php代码
2016/08/02 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
JMenuTab简单使用说明
2008/03/13 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
js微信分享实现代码
2020/10/11 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
vue发送websocket请求和http post请求的实例代码
2019/07/11 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
Python中几个比较常见的名词解释
2015/07/04 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
Python matplotlib画曲线例题解析
2020/02/07 Python
Pycharm连接远程服务器过程图解
2020/04/30 Python
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
马耳他航空公司官方网站:Air Malta
2019/05/15 全球购物
工作过失检讨书
2014/02/23 职场文书
给校长的建议书
2014/03/12 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
田径运动会通讯稿
2015/07/18 职场文书
婚礼答谢词范文
2015/09/29 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js