Program Club

하나의 PHP 포함 파일에서 다른 파일로 변수 전달 : 글로벌 vs. 아님

proclub 2020. 11. 5. 19:46
반응형

하나의 PHP 포함 파일에서 다른 파일로 변수 전달 : 글로벌 vs. 아님


한 포함 파일에서 다른 파일로 변수를 전달하려고합니다. 두 번째 포함 파일에서 변수를 전역으로 선언하지 않으면 작동하지 않습니다. 그러나 첫 번째 포함을 호출하는 파일에서 전역으로 선언 할 필요는 없습니다. 예를 들면 :


front.inc :

$name = 'james';

index.php :

include('front.inc');
echo $name;
include('end.inc');

출력 : 제임스


end.inc :

echo $name;

출력 : 아무것도


end.inc에서 $ name을 에코하기 전에 전역 $ name을 선언하면 제대로 작동합니다. 이 게시물에 대한 대답은 이것이 서버 구성에 달려 있음을 설명합니다. PHP의 변수를 한 파일에서 다른 파일로 전달

Apache 서버를 사용하고 있습니다. $ name을 전역으로 선언 할 필요가 없도록 구성하려면 어떻게해야합니까? 하나와 다른 하나에 장점 / 단점이 있습니까?


PHP에 파일을 포함하면 파일이 포함 된 파일 내에 코드가있는 것처럼 작동합니다. 포함 된 각 파일 내에서 코드를 복사하여 index.php. 이것이 PHP가 포함과 작동하는 방식입니다.

따라서, 귀하의 예제에서, 이후라는 변수를 설정 한 $name사용자의 front.inc파일을 한 다음 모두를 포함 front.inc하고 end.inc당신의 index.php, 당신은 수있을 것입니다 echo변수의 $name사후이 어디 includefront.inc당신의 내 index.php. 다시 말하지만, PHP index.php는 포함하는 두 파일의 코드가 파일의 일부인 것처럼 처리합니다 .

당신이 배치 할 때 echo자체 내에서 정의되지 않은 변수에 포함 된 파일 내의를, 그것은 별도로 다음 다른 포함 된 파일을 처리하기 때문에, 당신은 결과를 얻을하지 않을거야.

즉, 예상 한 동작을 수행하려면이를 전역으로 정의해야합니다.


피해야 할 함정이 있습니다. 함수 내에서 $ name 변수에 액세스해야하는 경우 "global $ name;"이라고 말해야합니다. 해당 기능의 시작 부분에. 동일한 파일의 각 기능에 대해이 작업을 반복해야합니다.

include('front.inc');
global $name;

function foo() {
  echo $name;
}

function bar() {
  echo $name;
}

foo();
bar();

오류 만 표시합니다. 이를 수행하는 올바른 방법은 다음과 같습니다.

include('front.inc');

function foo() {
  global $name;
  echo $name;
}

function bar() {
  global $name;
  echo $name;
}

foo();
bar();

이것이 당신이해야 할 전부입니다 :

앞 .inc

global $name;
$name = 'james';

나는 그것에 대한 이상한 해결책이 있습니다. 파일 end.inc에 다음 행을 추가하십시오.

$name=$name;

그러면 에코가 작동합니다.

이 솔루션이 왜 이렇게 작동했는지에 대한 좋은 설명없이 프로젝트에서이 솔루션을 사용했습니다.

참고URL : https://stackoverflow.com/questions/4675932/passing-a-variable-from-one-php-include-file-to-another-global-vs-not

반응형