$debug
변수를 사용하여 테스트중인 함수에서 인쇄 명령문을 제어하고 있습니다. $debug
이 함수와 동일한 범위 수준에서 true
으로 선언되고 초기화 되더라도 함수 내에서 false
(또는 undefined
)으로 처리됩니다. PHP의 가변 범위에 대한 나의 이해가 잘못 되었습니까? 이 문제를 어떻게 해결할 수 있습니까?범위에 있어야하는 변수가 없습니다.
실제 코드는 훨씬 복잡하지만 다음은 같은 문제를 나타내는 최소한의 예입니다. 그게 무슨 가치가 있는지, 나는 맥 오에스텐 10.9.4에서 PHP 5.4.24를 사용하여 커맨드 라인에서 이것을 실행하고있다.
<?php
$debug = true;
function myFunction()
{
if($debug) {
echo "I'm debugging";
} else {
echo "I'm not debugging";
}
}
myFunction();
?>
나를 위해이 기능은 "나는 디버깅하지 못했습니다."라고 표시합니다.
이 여기에 기본 * 범위 *입니다 사용할 수 있습니다. '$ debug'는 범위 안에 * 없습니다 *. 왜 그렇게 생각하니? –
@JohnConde 함수 자체와 동일한 수준입니다. 어떻게 그 범위에 있지 않습니까? –
이것은 JavaScript가 아닙니다. 함수 외부에서 선언 된 변수는 범위를 벗어납니다. [Documentation] (http://php.net/manual/en/language.variables.scope.php). –