2014-12-30 5 views
1

나는 PHP로 수업을 진행합니다. 클래스 내부에는 setContent()이라는 함수가 있습니다. 그 안에 여러 값을 갖는 변수가 있습니다. 변수 값을 가져 와서 배열에 저장했습니다. 다른 함수에서 배열에 저장된 모든 변수를 가져 오려고했습니다. 따라서 내 코드는 다음과 같습니다.php 클래스는 배열의 다른 함수에서 변수를 가져옵니다.

class foo{ 
    public function setContent() { 
     global $my_array; 
     $var1 = 'variable 1'; 
     $var2 = 'variable 2'; 
     $var3 = 'variable 3'; 
     $var4 = 'variable 4'; 
     $var5 = 'variable 5'; 
     new_array = array(); 
     $my_array = array_push($new_array, $var1, $var2, $var3, $var4, $var5); 
    } 

    public function getContent() { 
     global $my_array; 
     var_dump($my_array); 
    } 
} 

그러나 내가 수행 할 때 var_dump($my_array)입니다. 그것의 게재 NULL. 그래서 누군가가 배열의 다른 함수 안에 변수를 가져 오는 방법을 말해 줄 수 있습니다. 어떤 도움이나 제안이라도 대단히 감사 할 것입니다.

+0

,' –

+0

이 클래스 위해 설계되어 모든 것을 우회됩니다. 전역을 사용하지 마십시오. 변수를 클래스의 속성으로 저장하십시오. – Erik

+0

클래스를 사용하고 있으므로, 특히 속성의 모든 가능성에 대해 읽어보십시오. http://php.net/manual/en/language.oop5.properties.php – LS11

답변

5

클래스 내에서 선언하여 사용할 배열을 설정할 수 있습니다. 그런 다음, 전역 변수가 아닌 $this을 참조하십시오. 배열 이제 foo 개체의 일부이므로

class foo{ 
    public $my_array; # new bit here 

    public function setContent() { 
     # global $my_array; take this bit out 
     $var1 = 'variable 1'; 
     $var2 = 'variable 2'; 
     $var3 = 'variable 3'; 
     $var4 = 'variable 4'; 
     $var5 = 'variable 5'; 
     $new_array = array(); 
     $this->my_array = array_push($new_array, $var1, $var2, $var3, $var4, $var5); 
    } 

    public function getContent() { 
     var_dump($this->my_array); 
    } 
} 

, 우리는 지금 함께 모두 참조 할 수 있습니다. 당신이이 같은 클래스를 구현하지 않는 이유는

$f = new foo(); 
print_r($f->my_array); 
+0

설명을 제공하면이 답변이 완벽 할 것입니다. – Girish

1

:

class foo{ 

    public $my_array = array(); 

    public function setContent() { 
     $var1 = 'variable 1'; 
     $var2 = 'variable 2'; 
     $var3 = 'variable 3'; 
     $var4 = 'variable 4'; 
     $var5 = 'variable 5'; 

     array_push($this->my_array, $var1, $var2, $var3, $var4, $var5); 
    } 

    public function getContent() { 
     var_dump($this->my_array); 
    } 
} 

을 나는이 글로벌 사용하는 나쁜 관행 생각 공용을 유지한다면 다음과 같이 할 수있다 OOP의 변수.

public function getContent() { 
    return $this->my_array; 
} 

및 개체를 실체화 :

는 사실 내가 당신의 getContent 기능을 다시 작성하는 것이 좋습니다 내가 클래스 재사용 당신은했습니다

-1

http://php.net/manual/fr/function.array-push.php

을 향상시킬 수

$my_object = new foo(); 
$foo->setContent(); 
var_dump ($foo->getContent()); 

쓰려면 array_push($new_array, $var1, $var2, $var3, $var4, $var5);

array_push은 배열 길이 (정수가 아니라 배열!)를 반환하기 때문에. 그래서 당신은 쓸 수 없습니다 : 당신이 변수 외부 기능,`전역의 $ my_array 배열 = 배열 ​​() 선언해야

$myarray = array_push($myarray, $var1, $var2, $var3, $var4, $var5); 
관련 문제