CI 코드

제목 [팁] CI 이용시 가변변수 응용예제
글쓴이 ci세상 작성시각 2009/08/04 18:14:35
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 12713   RSS

간혹 CI 코딩시 메쏘드를 분리시켜서 불러오고 필요에 의해서 메쏘드명을 찾아서 실행해 주는 코드를 볼 수가 있는데요 .. 이것을 CI에서 바로 응용하기 위해서는 php메뉴얼에 다음 파트를 이해하면 쉽게 응용이 가능할것 같아서 정리해 봅니다^^

php 메뉴얼 가변함수 (variable function)는 변수명 뒤에 괄호가 왔을때, 해당 함수를 찾아 실행하게 처리하게 되는데요 CI의 클래스의 메쏘드에서도 바로 응용이 가능합니다.



<예제1> 
- 용도 : 메쏘드 A를 받아서 바로 출력해 주는 경우입니다.
- 실행주소 : http://도메인/blog
- 결과출력 : A함수
class Blog extends Controller {

	function Blog()
	{
		parent::Controller();	
	}
	
	function index()
	{
		$method = "A";

		$this->$method();
	}

	function A()
	{
		echo "A함수<br>";
	}
}
<예제2> 
- 용도 : 메쏘드 A0, A1, A2를 번갈아 출력
- 실행주소 : http://도메인/blog
- 결과출력 : 
A함수
B함수
C함수
class Blog extends Controller {

	function Blog()
	{
		parent::Controller();	
	}
	
	function index()
	{
		for ($i=0;$i<3;$i++) {     
			$method = "A$i" ;     
			$this->$method();
		}
	}

	function A0()
	{
		echo "A함수<br>";
	}

	function A1()
	{
		echo "B함수<br>";
	}

	function A2()
	{
		echo "C함수<br>";
	}
}
<중괄호 이용해서 같은 결과물 출력 : php3 작동안함>

class Blog extends Controller {

	function Blog()
	{
		parent::Controller();	
	}
	
	function index()
	{
		for ($i=0;$i<3;$i++) {     
			$this->{"A$i"}();
		}

	}

	function A0()
	{
		echo "A함수<br>";
	}

	function A1()
	{
		echo "B함수<br>";
	}

	function A2()
	{
		echo "C함수<br>";
	}
}

<예제3> 
- 용도 : 배열구조의 멤버변수를 가변변수로 다루는 경우
- 실행주소 : http://도메인/blog
- 결과출력 : 1
class Blog extends Controller {

	function Blog()
	{
	    $this->arr[0] = 0;     
		$this->arr[1] = 1;

		parent::Controller();	
	}
	
	function index()
	{
		$prop = "arr"; 
		echo $this->{"$prop"}[1];

	}
}









 다음글 검색파라미터 구하기 (2)
 이전글 한글 언어팩 번역 다시 했습니다 (5)

댓글

변종원(웅파) / 2009/08/04 22:28:47 / 추천 0
잘 정리해주셨습니다.
자주는 아니지만 어쩌다 쓸 필요가 있죠. 그럴때마다 함수선언에서 에러가 나서 헤맨다는...
ci에서는 _remap()이 같은 역할을...
ci세상 / 2009/08/04 23:05:42 / 추천 0

대부분, 많이 라는 표현 뺐습니다.^^

아래 18번에 _remap 에 질문글이 올라와서 가변변수 부분에 대하여 개념정리를 해보았는데 칭찬을 받았네요 ㅎㅎ