개발 Q&A

제목 코드이그나이터 객체 배열 질문드립니다!
카테고리 PHP
글쓴이 알라알리 작성시각 2017/09/25 09:56:13
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 14350   RSS

제가 현재 Controller 단에서 VO(DTO) 객체 배열로 View단에 보내주는데 

View에서 객체 배열 리스트를 접근 하는 방법이 

<?php foreach ($salesList as $list ):?>

   <?=$list->getItem_name()?>

   <?=$list->getItem_price()?>

<?php endforeach;?>

위 getter 메서드 호출 형식밖에 없는건가요?? 

 <?=$list->item_name?> 으로 접근을 하면 private로 접근이 불가합니다.  

${item_name} 같은 JSTL 방식이 있는지 질문드립니다!

 

 다음글 컨트롤러에서 다른 컨트롤러를 호출해서 사용 (5)
 이전글 HTTP와 HTTPS 간 로그인 세션 공유 질문 드립니... (3)

댓글

변종원(웅파) / 2017/09/25 10:07:11 / 추천 1
php 객체배열 사용법이 그렇게 되어 있습니다. 원하시는대로 사용하시려면 재할당해서 사용하시는 방법밖에 없습니다.
알라알리 / 2017/09/25 10:12:05 / 추천 0
그렇군요! 답변 감사합니다ㅎㅎ
한대승(불의회상) / 2017/09/25 10:16:07 / 추천 1

php의 매직 매소드를 사용하면 $list->item_name 으로 사용 가능 합니다.

http://php.net/manual/en/language.oop5.overloading.php#object.get

kaido / 2017/09/25 10:22:06 / 추천 1

JSTL 방식이라면 CI 템플릿 파서를 참고 하시면 됩니다.

http://www.ciboard.co.kr/user_guide/kr/libraries/parser.html

 

좀더 전문적으로 파싱해서 사용 하고 싶으시면 템플릿언더바 이라는 물건도 있습니다.

https://www.xtac.net/tutorial1/

 

 

JSTL 을 자주 사용 하셨다면 이쪽이 더 편하실수 있겠네요.

http://cikorea.net/bbs/view/tip?idx=18704&lists_style=

 

그게 아니면 MVC혹은 View를 지원하는 JS 라이브러리를 사용해서 JS로 받아가서 사용 하는 방법도 있습니다.

 

전부 맘에 안드시면 배열로 받아오신걸 오브젝트로 다시 떠서 사용 하셔도 됩니다.

PHP에서 배열과 객체 사용 방법은 한끗 차이라서요.

 

또한 위에 코드를 보고 예측 하건데... 이번 방법도 가능 합니다.

<?php foreach ($salesList as $key => $val ):?>

<?=$val['item_name']?>

<?php endforeach; ?>

 

만일 list 가 안쪽에 한개 더 있다면..

<?php foreach ($salesList['list'] as $key => $val ):?>

 

알라알리 / 2017/09/29 08:28:19 / 추천 0

좋은 답변 감사합니다!!