2011-10-26 2 views
0

공공 객체가 있습니다. 설정 파일에 X가 정의되어 있다고 가정 해 보겠습니다. 클래스 내의 메소드에서이 객체를 어떻게 사용할 수 있습니까? 나는 그 메소드 내에서 X를 세계화 할 때 클래스 내에서 보이는 것을 생각한다. 내가 데모를 만들었 :(PHP 변수 globlization 문제

include('config.php'); //the objec X is defined here 
class MyClass{ 
public foo(){ 
global $X; // I thing It is looking within the class 
} 
} 
+0

을, 당신은에 $ X의 사용을 할 수 없습니다 지금 foo() 메소드가 필요합니까? 로컬 또는 웹 서버에 있습니까? 수업 밖에서 작동합니까? –

+0

아니요, 전체 범위에 있으므로 메서드에 사용할 수 있습니다. – xdazz

+0

config.php의 관련 코드를 보여 주시겠습니까? –

답변

1

은 ... 나는 이것이 당신이 원하는 무엇을 희망 .. global.php

<?php 

$x=5; 

?> 

index.php를

<?php 
include('global.php'); 
class foo{ 
private $value; 
function __construct(){ 
global $x; 
    $this->value=$x; 
} 
function show(){ 
    return $this->value; 
} 
} 
$a= new foo(); 
echo $a->show(); 
?> 
+1

첫 번째 GLOBAL의 요점은 무엇입니까? –

+0

@Col. Shrapnel : 좋은 지적 : -? –

0

이 작품 나를 위해 :

class LemonSalesman { 
    public function advertise() { 
     echo 'Get your fresh lemons here!'; 
    } 
} 

$LemonSalesman = new LemonSalesman(); 

class MyObject { 
    public function foo() { 
     global $LemonSalesman; 

     $LemonSalesman->advertise(); 
    } 
} 

$MyObject = new MyObject(); 
$MyObject->foo(); 

$ X 객체가 전역 객체입니까? 이 방법으로 설정 파일에 $x을 정의한 경우

0

: 다음 함수에서 global를 사용

<?php 
     $x = 'somevalue'; 
?> 

잘 작동합니다. 또는 변수 배열 $GLOBALS['x']에 액세스하기 위해 전역 배열을 사용할 수도 있지만 일반적이거나 제안 된 방법이 확실하지 않습니다. 당신이 당신의 구성 변수는 함수 또는 클래스 내에서 정의 된 경우

그러나, 그것은 예를 들어뿐만 아니라이 세계를해야 할 것 : 그래서

<?php 

     function loadConfig(){ 
      // no global here means that $x is not global. 
      $x = 'somevalue'; 
     } 
<?