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添加MySQL数据记录代码
Jun 07 PHP
PHP 最大运行时间 max_execution_time修改方法
Mar 08 PHP
php 修改zen-cart下单和付款流程以防止漏单
Mar 08 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
XAMPP安装与使用方法详细解析
Nov 27 PHP
php实现将上传word文件转为html的方法
Jun 03 PHP
Zend Framework缓存Cache用法简单实例
Mar 19 PHP
一个简单安全的PHP验证码类、PHP验证码
Sep 24 PHP
PHP实现的方程求解示例分析
Nov 11 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
Apr 10 PHP
Laravel5.1 框架表单验证操作实例详解
Jan 07 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
留言板翻页的实现详解
2006/10/09 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
使用JavaScript switch case 另类写法
2010/03/14 Javascript
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
Javascript的一种模块模式
2010/09/08 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
AngularJS控制器之间的数据共享及通信详解
2016/08/01 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
详解JavaScript栈内存与堆内存
2019/04/04 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
JS变量提升及函数提升实例解析
2020/09/03 Javascript
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
python中引用与复制用法实例分析
2015/06/04 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
python 同时运行多个程序的实例
2019/01/07 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
2019/07/11 Python
Python中os模块功能与用法详解
2020/02/26 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
南京迈特望C/C++面试题
2012/07/09 面试题
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
方正Java笔试题
2014/07/03 面试题
承诺保证书格式
2015/02/28 职场文书
思品教学工作总结
2015/08/10 职场文书
新兵入伍决心书
2015/09/22 职场文书
pytorch 如何使用batch训练lstm网络
2021/05/28 Python