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制作静态网站的模板框架
Oct 09 PHP
初次接触php抽象工厂模式(Elgg)
Mar 21 PHP
PHP CURL模拟GET及POST函数代码
Apr 25 PHP
PHP 网络开发详解之远程文件包含漏洞
Apr 25 PHP
PHP中MVC模式的模板引擎开发经验分享
Mar 23 PHP
基于PHP输出缓存(output_buffering)的深入理解
Jun 13 PHP
PHP的运行机制与原理(底层)
Nov 16 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
php自定义截取中文字符串-utf8版
Feb 27 PHP
php框架CodeIgniter主从数据库配置方法分析
May 25 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 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版阿里云OSS图片上传类详解
2016/12/01 PHP
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
火车的故事教学反思
2014/02/11 职场文书
11月升旗仪式讲话稿
2014/02/15 职场文书
社区学习雷锋活动总结
2014/04/25 职场文书
家长会演讲稿
2014/04/26 职场文书
起诉意见书范文
2015/05/19 职场文书
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android
ubuntu下常用apt命令介绍
2022/06/05 Servers