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编写和读取XML的几种方式
Jan 12 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
PHP file_get_contents设置超时处理方法
Sep 30 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
php构造函数实例讲解
Nov 13 PHP
php实现aes加密类分享
Feb 16 PHP
PHP防止表单重复提交的几种常用方法汇总
Aug 19 PHP
php实现的网络相册图片防盗链完美破解方法
Jul 01 PHP
Symfony2函数用法实例分析
Mar 18 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
yii2-GridView在开发中常用的功能及技巧总结
Jan 07 PHP
PHP 爬取网页的主要方法
Jul 13 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中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
php调用C代码的实现方法
2014/03/11 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
html读出文本文件内容
2007/01/22 Javascript
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
javascript date格式化示例
2013/09/25 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
jQuery实现的登录浮动框效果代码
2015/09/26 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
Vue如何引入远程JS文件
2017/04/20 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
Python figure参数及subplot子图绘制代码
2020/04/18 Python
python实现简单贪吃蛇游戏
2020/09/29 Python
传播学专业毕业生自荐信
2013/11/04 职场文书
公共场所标语
2014/06/30 职场文书
安全生产年活动总结
2014/08/29 职场文书
干部年终考核评语
2015/01/04 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
导游词之南京中山陵
2019/11/27 职场文书
MySQL query_cache_type 参数与使用详解
2021/07/01 MySQL
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers