하나의 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사후이 어디 include의 front.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;
그러면 에코가 작동합니다.
이 솔루션이 왜 이렇게 작동했는지에 대한 좋은 설명없이 프로젝트에서이 솔루션을 사용했습니다.
'Program Club' 카테고리의 다른 글
| setup.py에서 여러 작성자 / 이메일을 지정하는 방법 (0) | 2020.11.05 |
|---|---|
| 신경망 역 전파의 편향을 업데이트하는 방법은 무엇입니까? (0) | 2020.11.05 |
| iOS6 UDID-identifierForVendor가 identifierForAdvertising에 비해 어떤 이점이 있습니까? (0) | 2020.11.05 |
| 앱이 닫히면 Android 서비스가 중지됨 (0) | 2020.11.05 |
| SQL Server와 같은 절에서 조인을 사용하여 select 절에서 Postgresql 하위 쿼리를 수행하는 방법은 무엇입니까? (0) | 2020.11.04 |