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 相关文章推荐
基于mysql的bbs设计(三)
Oct 09 PHP
php 读取shell管道传输过来的内容
Mar 01 PHP
php递归使用示例(php递归函数)
Feb 14 PHP
smarty模板引擎之配置文件数据和保留数据
Mar 30 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
Symfony的安装和配置方法
Mar 17 PHP
PHP中类属性与类静态变量的访问方法示例
Jul 13 PHP
php获取ip及网址的简单方法(必看)
Apr 01 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
May 26 PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 PHP
PHP的PDO事务与自动提交
Jan 24 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
PHP HTML代码串截取代码
2008/12/29 PHP
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
php绘制一条弧线的方法
2015/01/24 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
python操作oracle的完整教程分享
2018/01/30 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
python 自动识别并连接串口的实现
2021/01/19 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
工程服务质量承诺书
2015/04/29 职场文书
百万英镑观后感
2015/06/09 职场文书
小学班级管理心得体会
2016/01/07 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android