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 相关文章推荐
PHP4在Windows2000下的安装
Oct 09 PHP
如何使用脚本模仿登陆过程
Nov 22 PHP
discuz论坛 用户登录 后台程序代码
Nov 27 PHP
PHP 加密与解密的斗争
Apr 17 PHP
php实现自动获取生成文章主题关键词功能的深入分析
Jun 03 PHP
如何在smarty中增加类似foreach的功能自动加载数据
Jun 26 PHP
PHP基本语法实例总结
Sep 09 PHP
PHP实现上传多文件示例代码
Feb 20 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
PHP单例模式实例分析【防继承,防克隆操作】
May 22 PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 PHP
PHP后门隐藏的一些技巧总结
Nov 04 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实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
js正确获取元素样式详解
2009/08/07 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
2017/05/10 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
jQuery获取随机颜色的实例代码
2018/05/21 jQuery
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
angular 实现下拉列表组件的示例代码
2019/03/09 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
python日志记录模块实例及改进
2017/02/12 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
C++是不是类型安全的
2014/02/18 面试题
教学评估实施方案
2014/03/16 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
幸福中国演讲稿
2014/09/12 职场文书
教师政风行风评议心得体会
2014/10/21 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
2015年酒店工作总结
2015/04/28 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
交流会主持词
2015/07/02 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
详解Python为什么不用设计模式
2021/06/24 Python
vue router 动态路由清除方式
2022/05/25 Vue.js