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
댓글 입력