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版国家代码、缩写查询函数代码
Aug 14 PHP
php旋转图片90度的方法
Nov 07 PHP
php mail to 配置详解
Jan 16 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
php 读取输出其他文件的实现方法
Jul 26 PHP
PHP实现一个简单url路由功能实例
Nov 05 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
yii2利用自带UploadedFile实现上传图片的示例
Feb 16 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 PHP
php获取是星期几的的一些常用姿势
Dec 15 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 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
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
2007/01/15 PHP
php过滤html标记属性类用法实例
2014/09/23 PHP
php树型类实例
2014/12/05 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
JavaScript动态添加列的方法
2015/03/25 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
Python any()函数的使用方法
2019/10/28 Python
python小白学习包管理器pip安装
2020/06/09 Python
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
简历自荐信
2013/12/02 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
卫生系统先进事迹
2014/05/13 职场文书
品质标语大全
2014/06/21 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
2014年药房工作总结
2014/11/22 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
如何利用 CSS Overview 面板重构优化你的网站
2021/10/24 HTML / CSS