다음은 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 return "string"
}
public static function typelist($args){
return array_map(array("self","typeof"),$ args);//$args의 각 요소를 처리하기 위해 self::typeof 호출을 통한 배열 루프
}
공용 정적 함수 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'을 사용하는 메서드가 없습니다.".
"인수(% 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 함수 __construct() {//자신의 생성자
$args=func_get_args();//매개변수 가져오기
classUtil::callMethodForArgs($this,$args);//매개변수 처리 클래스의 메서드 호출
}
public function constructor_(){ //매개변수가 비어 있는 경우
$this->timetamp=time()
}
public function construction_dateAndTime($datetime){//클래스 자체인 경우
$this-> ;timetamp=$datetime->getTimetamp();
}
공용 함수 constructor_number($timestamp){//숫자인 경우
$this->timetamp =$timestamp;
}
public function constructor_string($string){//시간 문자열인 경우
$this->timetamp=strtotime($string)
}
public function getTimetamp(){// 타임스탬프를 얻는 방법
return $this->timetamp;
}
}
?>
위의 내용은 생성자 함수, PHP 고급 객체 생성, 생성자 함수의 내용을 포함한 다중 생성자의 사용을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.