2017-02-15 1 views
0

다른 함수에서 전역 변수에 액세스해야합니다. 먼저 하나의 함수에서 값을 전역 변수에 할당했습니다. 그 값을 다른 함수에서 얻으려고 할 때, 항상 null을 반환합니다. 여기에 내 코드함수 내에서 전역 변수에 액세스 할 수 없습니다.

StockList.php입니다

<?php 
$_current; 
class StockList 
{ 
    public function report(){ 
    global $_current; 
    $_current = 10; 
    } 

    public function getValue(){ 
    print_r($GLOBALS['_current']); 
    } 
} 
?> 

Suggestion.php 사전에

<?php 

    include ("StockList.php"); 
    $stk = new StockList(); 

    $stk->getValue(); 

?> 

감사합니다.

+0

왜 이것이 전역 변수 여야합니까? 왜 당신은 단순히 클래스 속성을 사용할 수 없습니까? –

+0

글로벌 변수를 생성하기 전에 액세스 할 수 없습니다. 그렇게 말하면 글로벌을 피하십시오. – Andrew

+0

나는 전역 변수가 클래스 내부에 있어야한다고 생각한다. –

답변

0

남자, 당신은 당신이 변수 값을 설정하는 클래스를 처리 할 때, 어쨌든 당신의 index.php 에서 보고서를()를 호출 한 말했듯이 뭘 하려는지 이해하기 위해, 표준 절차는 다음과 같은 어려운 그 :

class StockList 
{ 
    public $_current; 
    public function setValue($value){ 
    $this->current = $value; 
    } 

    public function getValue(){ 
    return $this->current; 
    } 
} 

그리고 당신은 클래스를 사용하고 싶어 할 때마다 후 :

<?php 
    include ("StockList.php"); 
    $stk = new StockList(); 
    $stk->setValue(10); 
    $_current = $stk->getValue(); 
    var_dump($_current); 
?> 

이 OOP의 기본 개념이다,이 방법의 장점은 다음과 같습니다

  1. $ _ 현재 값을 동적으로 설정할 수 있습니다.

  2. getValue() 함수는 변수의 값을 출력하는 용도로만 사용되는 것이 아니라 왜 그 값을 얻기 위해 그 함수를 사용할 수 있는지, 그리고 그 값으로 원하는 것을 모두 할 수 있습니다.

+0

report()가 index.php에서 호출되었습니다. getValue() 함수는 Ajax에서 호출됩니다. – balaraman

+0

어떻게 든 report() 호출 코드를 표시 할 수 있습니까? 또는 클래스 인스턴스를 작성한 후 getValue()를 호출하기 전에 report()를 호출했는지 확인하십시오. – Learner

+0

@balaraman 값 변경이 페이지 전체에 걸쳐 유지 될 것으로 예상되는 것 같습니다. 이 경우 세션을 사용해야합니다. 그렇지 않으면 매번 값을 설정해야합니다. – Machavity

관련 문제