2012-05-11 3 views
1

PHP OOP에 익숙하지 않아 배열을 가져 오는 데 문제가 있습니다.PHP OOP 및 배열

class example 
{ 
    public $array; 

    public function __construct() 
    { 
     $this->array = array(); 

    } 

    public function do_work() 
    { 
     $this->array[] = 'test'; 
    } 
} 
$test = new example(); 
$test->do_work(); 
$test->array; 

'test'대신 빈 배열이 계속 나타납니다. 내가 뭘 잘못하고 있니?

+0

new example()은 배열로 객체를 생성하고 $ test-> array는 기술적으로 배열에 액세스 할 수 있지만 $ test를 호출하지 않으면 배열을 출력해야합니다. -> do_work(); 배열에는 아무것도 포함되지 않습니다. – EmmanuelG

+1

아마도 생성자에서 do_work()을 호출 할 의도가 있습니까? 또한 변수 이름에 보호 된 키워드를 사용하는 것은 결코 좋은 생각이 아닙니다. – Ansari

+0

@Ansari : 두 진술에 모두 동의하지 않습니다. 설명하십시오. –

답변

5

실제로 함수를 호출하지 않기 때문에 이것은 $test->do_work();입니다. 생성자는 단지 빈 배열을 만든 다음 속성에 액세스하려고 시도하기 때문입니다. 이어야합니다.

업데이트

난 당신이 질문을 업데이트를 참조하십시오. 단순히 echo $test->array 인 경우 Array 만 인쇄하면됩니다. 난 당신이 기대하는 것입니다 생각

array(1) { [0]=> string(4) "test" } 

: 나는 당신의 업데이트 된 코드를 복사하여 var_dump($test->array)을 수행 할 때 그러나, 이것은 내가 얻을 출력됩니다. 그래도 질문에있는 코드는 아무 것도 출력하지 않아야합니다. $test->array으로 아무 것도하지 않으면 변수가 평가되고 버려집니다.

+3

원래 답변에서 OP는 코드에서'$ test-> do_work()'를 가지고 있지 않았다는 것에 유의하십시오. 유예 기간 편집으로 인해 표시되지 않습니다. –

+0

@ 트루스 감사합니다, 내 대답을 업데이 트했습니다. –

+0

예, 당신의 권리. 감사! –

4

마지막 진술 $test->array;은 실제로 아무 것도하지 않습니다. 내 생각 엔 당신이 echo 같은 것을 사용하고있는 것 같습니다. var_dump, see the example on codepad