PHP 7.1 함수 리턴 타입이 다를 때

PHP 7.1 함수 리턴 타입이 다를 때

QA

PHP 7.1 함수 리턴 타입이 다를 때

본문

 
// $db는 PDO 입니다
function sql_query($sql, $link = null): ?PDOStatement
{
    global $db;
 
    if ($link === null) {
        $link = $db;
    }
 
    $sql = trim($sql);
    $sql = preg_replace('#^select.*from.*[\s\(]+union[\s\)]+.*#i ', 'select 1', $sql);
    $sql = preg_replace('#^select.*from.*where.*`?information_schema`?.*#i',
    'select 1', $sql);
 
    try {
        $rst = $link->query($sql);
    } catch (PDOException $ex) {
        return $ex;
    }
 
    return $rst;
}

 

위와 같은 sql_query 함수인데 리턴 값이 평소에는 PDOStatement 입니다만,

예외 상황이 발생하면 PDOException 형태로 타입이 변환이 되는데요.

리턴 타입을 어떻게 하면 둘 다 에러없이 정상적으로 리턴이 될까요?

리턴 타입을 정하지 않으면 되긴 합니다만 멀티로 하는 방식이 혹시 있을까 궁금해서 물어봅니다.

 

 

이 질문에 댓글 쓰기 :

답변 1

현재는 union return types 가 안되는듯 하네요.
굳이 하시려면 리턴 하고자 하는 타입들을 멤버변수로 갖는 다른 클레스를 만들어 놓고, 그 인스턴스를 반환하는식으로 해야하지 싶습니다.
답변을 작성하시기 전에 로그인 해주세요.
전체 123,731 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT