2011-03-26 3 views
1

mysql 확장 함수는 선택적 링크 인수를 허용하고 지정되지 않은 경우 mysql_connect 호출의 마지막 반환 값을 사용합니다. 내 상위 수준의 함수 (들)에서 동일한 동작을 원하지만 구현 방법을 모릅니다.mysql_XXXX 기본 링크 식별자 인수를 정상적으로 처리하십시오.

  1. 경유 진짜 빈 값 (NULL이되지 않습니다

    function get_mysql_info($linkid = null){ 
        $linkid ? $strInfo = mysql_info($linkid) : $strInfo = mysql_info(); 
        // followed by multiple tortures by ereg calls even! 
    

    내가 수도 (또는하지 않을 수 있습니다) 작업은 두 가지 방법을 참조 : 아래는 절대적으로 내가 사용하지 않으려는 추의 예이며, 명시 적으로 기능을 낮은 수준으로) 불평 자격 MySQL의 기능이 더 링크 인수가없는 생각을하고 마지막 기억 리소스를 검색하는 마지막 기억하고 자원을

  2. 을 사용합니까 가서 기본 방법
,

아직 두 변종 중 하나가 성공하지 못했다면, 조언을 해주시고 고맙습니다!


변명 반복이 내가 원하는 것을 더 설명하는 의사 시도는 다음과 같습니다

function mysql_wrap ($optional_link_identifier) { 
    mysql_this($optional_link_identifier); // use specified link or default (as described above) 
    mysql_that($mandatory_parameter, $optional_link_identifier); // use specified link or default 
    // so on 
} 

... 선택적 인수의 존재에 분기/부재에 반대 :

function mysql_wrap ($optional_link_identifier = NULL) { 
    if ($optional_link_identifier) 
    mysql_this($optional_link_identifier); // use specified link 
    else mysql_this(); // or default 
    if ($optional_link_identifier) 
    mysql_that($mandatory_parameter, $optional_link_identifier); // use specified link 
    else mysql_that(); // or default 
    // so on. as you see, generalizing the code in the function actually made things even worse 
} 

그래서 저는 두 경우 모두 보편적으로 처리 할 방법을 찾고 있습니다.

+2

왜 자연스럽게 이것을 표현하고 싶지 않으십니까? 조금 더 자세히 설명해 주실 수 있습니까? – Jon

답변

-1

mysql_ * 함수에는 날짜가 있습니다.

PDO를 사용하면 사용중인 DB 서버의 유형과 크게 독립적 인 완전한 OOP 인터페이스를 얻게됩니다.

+0

"X 대신 Y 사용"대답은 쓸모가 없습니다. –

+0

게시 된 질문은 특히 mysql_connect에 의해 생성 된 핸들을 암시 적으로 사용하는 것과 관련됩니다. 모든 호출이 인스턴스에 한정되어 있으므로 PDO와 같은 OO DB 레이어를 사용하면이 요구 사항이 완전히 제거됩니다. – Stephen

+0

예, TomCat을 사용하면 PHP5의 의심스러운 OOP에 의존 할 필요가 없습니다. 원래 ** 특정 ** 문제가 여전히 남아 있습니다. –

관련 문제