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下MAIL的另一解决方案
Oct 09 PHP
几个学习PHP的网址
Nov 25 PHP
IStream与TStream之间的相互转换
Aug 01 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
Jun 03 PHP
深入PHP内存相关的功能特性详解
Jun 08 PHP
php一次性删除前台checkbox多选内容的方法
Sep 22 PHP
ThinkPHP实现动态包含文件的方法
Nov 29 PHP
Zend Framework框架Smarty扩展实现方法
Mar 22 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
php正则表达式使用方法整理集合
Jan 31 PHP
php post换行的方法
Feb 03 PHP
php7中停止php-fpm服务的方法详解
May 09 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函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
JS批量操作CSS属性详细解析
2013/12/16 Javascript
js创建对象的方式总结
2015/01/10 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
vue组件间通信解析
2017/03/01 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
jQuery实现遍历XML节点和属性的方法示例
2018/04/29 jQuery
webpack4.0 入门实践教程
2018/10/08 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
python实现多层感知器
2019/01/18 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
keras slice layer 层实现方式
2020/06/11 Python
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
事业单位请假制度
2014/01/13 职场文书
机关出纳岗位职责
2014/04/03 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
爱国主题班会教案
2015/08/14 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android