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 相关文章推荐
dedecms系统常用术语汇总
Apr 03 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
ecshop 2.72如何修改后台访问地址
Mar 03 PHP
从刷票了解获得客户端IP的方法
Sep 21 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
详解PHP匿名函数与注意事项
Mar 29 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
Apr 01 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 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
输出控制类
2006/10/09 PHP
简单的页面缓冲技术
2006/10/09 PHP
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
php INI配置文件的解析实现分析
2011/01/04 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
jQuery使用deferreds串行多个ajax请求
2016/08/22 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
javascript按顺序加载运行js方法
2017/12/01 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
pycharm远程调试openstack的图文教程
2017/11/21 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
python filecmp.dircmp实现递归比对两个目录的方法
2020/05/22 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
优秀技术工人先进材料
2014/02/17 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
简单介绍Python的第三方库yaml
2021/06/18 Python
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers
MySql中的json_extract函数处理json字段详情
2022/06/05 MySQL
关于MySQL中explain工具的使用
2023/05/08 MySQL