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 获取MSN好友列表的代码(2009-05-14测试通过)
Sep 09 PHP
修改PHP的memory_limit限制的方法分享
Feb 21 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 PHP
解析PHP中ob_start()函数的用法
Jun 24 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 PHP
PHP实现多关键字加亮功能
Oct 21 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
Aug 04 PHP
php实现支付宝当面付(扫码支付)功能
May 30 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
Feb 08 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 PHP
php中的依赖注入实例详解
Aug 14 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新手上路(十四)
2006/10/09 PHP
PHP 文章中的远程图片采集到本地的代码
2009/07/30 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
jquery插件jquery倒计时插件分享
2013/12/27 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
2017/03/23 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
js实现3D旋转效果
2020/08/18 Javascript
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python unittest单元测试框架总结
2018/09/08 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
css3实现二维码扫描特效的示例
2020/10/29 HTML / CSS
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
岗位职责的含义
2013/11/17 职场文书
工商管理专业职业生涯规划
2014/01/01 职场文书
店铺转让协议书(2014版)
2014/09/23 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
2014年科普工作总结
2014/12/06 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
Python 的 sum() Pythonic 的求和方法详细
2021/10/16 Python