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做的端口嗅探器--可以指定网站和端口
Oct 09 PHP
PHP 文件上传功能实现代码
Jun 24 PHP
ThinkPHP模板比较标签用法详解
Jun 30 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
PHP编写登录验证码功能 附调用方法
May 19 PHP
java微信开发之上传下载多媒体文件
Jun 24 PHP
PHP中SQL查询语句的id=%d解释(推荐)
Dec 10 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
php常用日期时间函数实例小结
Jul 04 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 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
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
js跨域问题浅析及解决方法优缺点对比
2014/11/08 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
js数据类型检测总结
2018/08/05 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
vue-router的使用方法及含参数的配置方法
2018/11/13 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
2019/10/28 jQuery
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
jQuery实时统计输入框字数及限制
2020/06/24 jQuery
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
python实现大战外星人小游戏实例代码
2019/12/26 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
评职称个人总结
2015/03/05 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python
Vue Element UI自定义描述列表组件
2021/05/18 Vue.js
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS