2011-03-21 2 views
0

그래서 나는 PHP에서 객체 지향 프로그래밍에 대한이 책을 읽고 있어요, 그리고 저자가 데이터 유형을 확인하는 방법의 예에서 나는이 기능을 통해 온 :누구나이 preg_match() 함수가하는 일을 설명 할 수 있습니까?

//class AddressManager... 
function outputAddresses($resolve) { 
    if (is_string($resolve)) { 
    $resolve = 
     (preg_match("/false|no|off/i", $resolve))? 
     false:true; 
    } 
    // ... 
} 

사람이 그것의 목적이 무엇인지 말해 줄 수? 속성은 중요하지 않지만 문자열을 부울로 변환하도록 설계된 메서드입니다 (필자는 생각합니다).

답변

0

변수 $ resolve에 "false"또는 "no"또는 "off"가 구분되지 않으면 (대소 문자를 무시하고) FALSE를 반환합니다. 그렇지 않으면 TRUE를 반환합니다.

간단한 사용자 입력 검사기처럼 보입니다 (그다지 좋지 않습니다). 예를 들어, "아무것도"또는 "지금"을 입력하면 어떻게됩니까?

+0

좋은 지적 당신이 가지고 있지만, 속성 $의 해결이 SimpleXML을 API를 사용하여 XML 설정 파일에서 가져온 것입니다, 그래서 난 속성에 이미 미리 결정하고, 많은 오류가 잡는 것을 감사를 필요로하지 않는 것 같아요 너무 빨리 답장! 샤워로가는 데 걸리는 시간에 많은 답장을 보내고,이 사이트를 많이 좋아합니다! – Cazman182

2

preg_match 그 자체는 문자열을 부울로 변환하지 않으며 정규 표현식 일치 함수입니다. 위의 대한

class AddressManager 
... 
    function outputAddresses($resolve) 
    { 
    if (is_string($resolve)) 
    { 
     if (preg_match("/false|no|off/i", $resolve)) 
     { 
     $resolve = false; 
     } else { 
     $resolve = true; 
     } 
     // $resolve = (preg_match("/false|no|off/i", $resolve))? false:true; 
    } 
// ... 
} 
0

의사 : 당신이해야하는 것은 거의이 평가 삼항 표현이다.

if($resolve equals false or no or off) 
then 
    set $resolve as false 
else 
    set $resolve as true 

? (삼항 연산자)는 단순히 위의 코드 행을 대체합니다. 이것은 장면 뒤에서 일어나는 일입니다.

http://en.wikipedia.org/wiki/Ternary_operation

관련 문제