이 게시물과 관련된 몇 가지 게시물이 있습니다. 그러나 내가 고심하고있는 상황에 가까운 것이 보이지 않습니다.PHP에서 포함 된 파일의 범위가 손실되었습니다.
오리지널 디자이너가 흥미로운 설계 방법을 채택한 다소 큰 코드베이스를 상속 받았습니다. 나는 정의 된 클래스의 메서드를 호출하려고 시도하고있다. 클래스 파일 자체에는 전역 변수가 설정되어 있습니다. 함수에서이 메서드를 호출합니다. 여기에서도이 파일을 포함 시켰습니다. 메소드가 실행되면 전역 변수가 더 이상 정의되지 않습니다. 아래를 참조
내 파일 :
<?php //myScript.php
echo("Calling foo(): ");
foo();
function foo() {
include '../../php/class.bar.php';
$bar = new bar();
$bar->doSomething();
}
?>
../../php/class.bar.php :
그래서$GLOBAL_ARRAY_ONE[0] = 'Here I am';
$GLOBAL_ARRAY_ONE[1] = 'JT';
class bar {
public $itsFoo = array();
public $itsBar = array();
public function doSomething() {
global $GLOBAL_ARRAY_ONE;
$this->itsFoo[0] = $GLOBAL_ARRAY_ONE[0];
$this->itsFoo[1] = $GLOBAL_ARRAY_ONE[1];
var_dump($this->itsFoo);
}
}
, 내가 실행 " myScript.php "출력은 다음과 같습니다. calling foo(): NULL
개인적으로 선언하지 않겠습니다. 그런 식으로 전역 배열을 만들었지 만, 나는 그들에게 접근해서는 안되는 이유가 없다.
아이디어가 있으십니까? 감사!
이 정확히 권리입니다. 나는 이것을 직접 시도하고 var_dump()에 NULLS를 받았다.하지만 함수를 포함하는 함수를 모두 움직이면 화일이 작동한다. – nageeb
안녕 Whaddya 알아! I coulda는 그것을 시험해 보았다! 도와 주셔서 감사합니다! – eggmatters