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编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
Smarty模板学习笔记之Smarty简介
May 20 PHP
WordPress开发中用于标题显示的相关函数使用解析
Jan 07 PHP
PHP简单处理表单输入的特殊字符的方法
Feb 03 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
PHP实现多图上传和单图上传功能
May 17 PHP
PHP实现生成数据字典功能示例
May 24 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 PHP
php实现自动生成验证码的实例讲解
Nov 17 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
配置支持SSI
2006/11/25 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
javascript淡入淡出效果的实现思路
2012/03/31 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
详解Python命令行解析工具Argparse
2016/04/20 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
详解python 注释、变量、类型
2018/08/10 Python
python sorted函数原理解析及练习
2020/02/10 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
Java程序员常见面试题
2015/07/16 面试题
演讲比赛获奖感言
2014/02/02 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
运动会口号大全
2014/06/07 职场文书
大学生个人总结范文
2015/02/15 职场文书
nginx服务器的下载安装与使用详解
2021/08/02 Servers
手把手教你导入Go语言第三方库
2021/08/04 Golang
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers