php 클래스 내에 멤버 함수 a 와 b 가 있을시 a 멤버함수가 배열을 리턴하여 b의 멤버함수가 a멤버함수를 호출 하려면 어떻게 해야되나요?

조회수 435회
class Test{
    public function in_put($arr=array()){
     return $arr;
    }
    public function out_put(){
        $b=$this->in_put();
        echo $b[0];
    }
}


$ary=['hello','bye'];

$mmo=new Test;
$mmo->in_put();
$mmo->out_put();

만약에 이런 경우 어떻게 해야 되나요? 제가 뭘 잘못 한건지 궁금합니다!! 멤버변수를 이용하는거 말고는 방법이 없을까요?!!

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 원하시는 것은 프로퍼티(property, 속성)라는 것입니다.

    <?php
    
    /**
     * 클래스라는 것은 프로퍼티를 가질 수 있다.
     */
    class Test
    {
    
        /**
         * 프로퍼티는 클래스 정의 앞쪽에 등장한다. public이냐 protected냐 같은건 경우에 따라서
         *
         * @var array
         */
        private $inputoutputarray;
    
        /**
         * 특정 변수를 프로퍼티 값으로 주입할 수 있다.
         *
         * @param array $arr 프로퍼티에 꽂아놓을 배열
         * @return void
         */
        public function in_put($arr = array())
        {
            $this->inputoutputarray = $arr;
        }
    
        /**
         * 클래스 프로퍼티를 찾아서 꺼내올 수 있다.
         *
         * @return mixed 프로퍼티로 저장돼 있는 것이 배열이고 0번 자료가 있을 경우 그걸 제공, 없으면 null
         */
        public function out_put()
        {
            $b = $this->inputoutputarray;
            return is_array($b) && isset($b[0]) ? $b[0] : null;
        }
    }
    
    // 이제 정의한 클래스로부터 인스턴스를 생성하고 ...
    $mmo = new Test;
    
    // ... 그 인스턴스의 프로퍼티를 지정하면 ...
    $ary = ['hello', 'bye'];
    $mmo->in_put($ary);
    
    // ... 인스턴스를 없애지 않는 한은 그 인스턴스의 프로퍼티를 언제든지 꺼내올 수 있다.
    var_dump($mmo->out_put());
    
    // 해당 프로퍼티가 public 이었을 경우 다음이 정상 동작한다.
    var_dump($mmo->inputoutputarray);
    
    • 소중한 답변!!! 너무나도 감사합니다!!!! 근데 올려주신 답변을 복사해서 주석다 지우고 해봤는데 ( ! ) Fatal error: Uncaught Error: Cannot access private property Test::$inputoutputarray ( ! ) Error: Cannot access private property Test::$inputoutputarray 이렇게 에러가 뜹니다 그리고 멤버변수를 이용하는거 말고는 방법이 없는건가요?!! 주석으로 설명까지 해주셔서 너무나도 감사합니다 개감동!!!! 알 수 없는 사용자 2020.3.3 17:10
    • 막판에 그거는 올린 소스 맨마지막 주석을 참고하셔서 가시성을 public으로 바꿔보세요. 엽토군 2020.3.3 17:58

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)