以下は、PHP の高度なオブジェクト構築におけるオブジェクト構築に複数のコンストラクターを使用する原理を示すコード例です。
コードをコピー コードは次のとおりです:
class classUtil {//これはパラメータ処理 Class
public static function typeof($var){
if (is_object($var)) return get_class($var);//オブジェクトの場合はクラス名を取得
if ( is_array($var) ) return "array";//配列の場合、return "array"
if (is_numeric($var)) return "numeric";//数値の場合、return "numeric "
return "string"; //String return "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("クラス %s には、取得するメソッド '$name' がありません。"
"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 functionconstruct_(){ //パラメータが空の場合
$this->timetamp=time();
}
public functionconstruct_dateAndTime($datetime){//クラスそのものの場合
$this->gt ;timetamp=$datetime->getTimetamp();
}
public functionconstruct_number($timestamp){//数値の場合
$this->timetamp =$timestamp;
}
public functionconstruct_string($string){//時刻文字列の場合
$this->timetamp=strtotime($string);
public function getTimetamp(){// タイムスタンプを取得するメソッド
return $this->timetamp;
}
}
?>