构造对象是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高级对象构建多个构造函数的使用方法相关推荐

  1. Android调用WebService系列之对象构建传递

    上一篇我们讲了如何封装Android调用WebService的能力,把上一章的类加入我们便有了与WebService通讯的能力.往往我们会遇到WebService调用是通过对象来进行实际交互调用的.于 ...

  2. java安全编码指南之:对象构建

    文章目录 简介 构造函数的异常 Finalizer Attack 解决Finalizer Attack 使用final class 使用final finalize方法 使用flag变量 使用this ...

  3. 类与对象、引用传递、封装、构造方法、匿名对象笔记

    类与对象 类与对象的基本概念  类:是抽象的概念集合,表示的是一个共性的产物,类中定义的是属性和行为(方法):(不能用)  对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属 ...

  4. 15高级链接构建策略和技巧,以提高您的SEO

    链接建设仍然是SEO行业的白象.许多人宣称链接建设是垃圾邮件,死的,甚至对你的SEO有害.但是,链接建设仍然是基于性能的有效SEO策略的主要部分.如果执行得当,有助于提高自然搜索排名. 我最近在一次分 ...

  5. Java构造方法定义、对象实例化的过程、对象的引用和实体

    Java构造方法定义: 一.在类中,构造方法是一个特殊的方法,当程序用某个类创建对象时,需要使用这个类中的构造方法进行创建: 如下演示: 通过 Structure_Method_Test() 构造方法 ...

  6. Apollo6.0代码Lattice算法详解——Part6:轨迹评估及碰撞检测对象构建

    Apollo6.0代码Lattice算法详解--Part6:轨迹评估及碰撞检测对象构建 0.前置知识 1.涉及主要函数 2.函数关系 3.部分函数代码详解 3.1 lattice_planner.cc ...

  7. js_高级_对象、面向对象、构造函数、实例对象、原型、原型链

    1.什么是对象 汽车不是对象是是一类事物,一辆汽车是对象. 2.什么是面向对象 3.面向对象的特点 案例来理解  面向过程 和 面向对象---打印出学生的成绩表 面向过程:如何做这件事情 ,把事情拆成 ...

  8. java构造方法重载_Java 重载、重写、构造函数的实例详解

    Java 重载.重写.构造函数的实例详解 方法重写 1.重写只能出现在继承关系之中.当一个类继承它的父类方法时,都有机会重写该父类的方法.一个特例是父类的方法被标识为final.重写的主要优点是能够定 ...

  9. 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)

    27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...

最新文章

  1. 【JavaScript总结】JavaScript发展与学习内容
  2. pandas生成新的累积连乘数据列(cumprod)、pandas生成新的累积连乘cumprod数据列(数据列中包含NaN的情况)、pandas计算整个dataframe的所有数据列的累积连乘
  3. 中电信抢滩云计算 在上海开建“信息银行”
  4. WebForm服务器验证控件与前端js自定义验证共同使用
  5. 使用 Fluent API 配置/映射属性和类型
  6. PAT (Basic Level) 1058 选择题(模拟)
  7. zookeeper配置文件详解
  8. pyquery获取不到网页完整源代码_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...
  9. 记一次神奇的SQL查询经历,group by慢查询优化
  10. ojdbc14_g.jar与ojdbc14.jar区别
  11. 查询表中id相同的记录mysql_mysql – 从两个表中的ID相同的两个表中选择数据
  12. 微信开发api文档地址
  13. jupyter代码字体大小_Jupyter Notebook 更改字体、字体大小、行高
  14. AtCoder Beginner Contest 258 A~Ex 题解
  15. WPE1.3C的详细使用教程
  16. 【matplotlib + opencv】关于opencv和matplotlib绘制图像时,出现色差色偏的问题探讨,思考,解决。(深度学习数据包plt.imshow绘制的图像底色偏绿蓝偏黄)
  17. 武汉科技大学计算机科学与技术分数,2019武汉科技大学研究生分数线汇总(含2016-2019历年复试)...
  18. Texstudio 英文拼写检查功能出问题的解决方法
  19. 什么叫做石英表_石英表是什么意思?
  20. IDEA2020.1基于Maven开发spring cloud项目报错 程序包 com.xxx.xxx.xxx不存在

热门文章

  1. unity打包-1.打包安卓apk
  2. jQuery的animate()的scrollTop属性在iPad Safari上不起作用
  3. [转] the New Oracle BIEE PLUS intro
  4. Fescar 源码解析系列
  5. 论文阅读笔记-Glyce: Glyph-vectors for Chinese CharacterRepresentations
  6. 【Python 第16课】 字符串格式化
  7. 微信小程序:实现悬浮返回和分享按钮
  8. 计算机操作员技师考试内容,计算机操作员技师理论考试题库.doc
  9. Netty搭建Http2服务端并支持TLS传输加密
  10. 企业文档加密软件选择标准是什么