Home  >  Article  >  Backend Development  >  Use case analysis of multiple constructors in PHP advanced object construction

Use case analysis of multiple constructors in PHP advanced object construction

黄舟
黄舟Original
2017-07-02 09:58:221191browse

Building objects is an important theme in PHP object-oriented programming design. In the simplest case, the ordinary constructor is enough, but if you want to carry out a more complex design, the constructor may become difficult to manage.

Here is a paragraph The code example demonstrates the principle of using multiple constructors for object construction in PHP advanced object construction.

<?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 &#39;$name&#39; 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; 
} 
} 
?>


In fact, it is very simple. The main thing is to process the parameters. Whether the parameters are characters, numbers, or classes, different processing is advanced, which increases the flexibility of the code. sex.

The above is the detailed content of Use case analysis of multiple constructors in PHP advanced object construction. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn