2012-08-25 4 views
1

으로 나는 다음과 같은 코드를 사용하는 워드 프레스 테마 건너 온 : 그래서 오히려 혼란 전에사용 및 조건부

is_file and include 'file.php'; 

나는 이것을 본 적이 없다. 그것은 내가보고있는 특정 wordpress 테마에서 잘 작동합니다. 하지만 난 그냥 코드 줄을하고 파일을 포함뿐만 아니라 나에게 다음 사항 제공 자체에서 실행하는 경우 :

Notice: Use of undefined constant is_file - assumed 'is_file' in (the file path) on line 3 

을하지만 내가 할 경우이 :

is_file('file.php') and include 'file.php'; 

그것은 잘 작동 .

질문 1 : 왜이 ​​기능이 작동하며 "and"를 조건으로 사용하는 것에 대해 더 자세히 읽을 수 있습니까?

질문 2 : 코딩 방법이 좋지 않습니까? 느린가요? 어떤 위험? 기타

질문 3 : 왜 WordPress 테마에서 작동 하나 자체적으로 작동하지 않습니까? (예, 동일한 PHP 설정을 사용합니다).

+0

"자체적으로가 아니라"는 의미는 무엇입니까? –

+0

wp 테마 외부 자체 파일에 있습니다. 코드 한 줄. – John

+0

아마도 file.php를 찾을 수 없기 때문에 어쩌면? –

답변

0

and은 먼저 왼쪽 피연산자를 검사하고 거짓이면 오른쪽 피연산자를 확인할 필요가 없습니다.

나는 그것에 대해 어딘가에서 읽는 것을 기억합니다. 링크를 찾을 수 있는지 보겠습니다.

+0

네, 맞습니다. 그러나 매개 변수를 지정하지 않아도 작동한다는 것은 이상한 일입니다. – John

+0

작동하지 않습니다. 이는 PHP의 "모든 비용으로 계속 작업"의 증상입니다. – Femaref

1

이 경우 and은 "진술이 사실이라면 이것을하십시오"를 의미합니다. 따라서 Wordpress의 코드는 다음과 같습니다.

is_file and include 'file.php' 

상수는 대문자 여야합니다. 이 경우 상수를 의미한다고해도 의미가 없습니다.

is_file('my_file') and include 'my_file.php' 

이 올바른 방법입니다.

같은 식으로, 당신은 or을 사용할 수 있습니다 : "문 false의 경우 경우, 이렇게",

$payed or my_redirect_function('pay.php'); //go to payment page 
+0

오케이. 나는 그것이 정말로 오류없이 파일을 포함한다는 것이 정말로 이상하다는 것을 알았다. – John

+0

가능합니다. is_file 자체는 아무것도 아니기 때문에 PHP는 상수로 가정합니다. 그것은 상수 IS_FILE을 가정하고 아마도 그것은 TRUE로 설정됩니다. – Peter

1
is_file('file.php') and include 'file.php'; 

가 한

TRUE

is_file and include 'file.php'; 
반환 is_file('file.php') 때문에 작동처럼 is_file 반환하지 않기 때문에 작동하지 않습니다.

+0

올바르지 않습니다. 'is_file' (문자열)은 진실입니다. –

1

앤드 지시문은 하나 예외 갖는 함수

function and($a, $b) 
{ 
    if($a) return $b; 
    else return $a; 
} 

처럼 취급 될 수있다. 두 번째 매개 변수로 표현식을 전달할 때 $ a가 false 인 경우도 실행되지 않습니다. 이것은 빌트인 언어 최적화이며, 이런 식으로 행동하는 것이 보장됩니다. 이렇게하면 앞의 모든 것이 거짓 일 때만 실행되는 표현식 체인을 작성할 수 있습니다. PHP 에서뿐만 아니라 나쁜 연습으로 간주되지 않는 매우 자주 사용되는 기능입니다.

function or($a, $b) 
{ 
    if($a) return $a; 
    else return $b; 
} 

은 슬프게도 워드 프레스에 대해 잘 모르는 :

같은 일이 약 $ a 또는 $ B이다.