CI 묻고 답하기

제목 새로운 객체 생성은 어떻게 하나요?
글쓴이 재빠른설계자 작성시각 2016/02/03 17:56:25
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 14211   RSS

안녕하세요. 

 

library 에 있는 클래스를 

 

$this -> load -> library('myclass');

 

 

이렇게 하면, 라이브러리를 로드 하여

 

$this -> myclass -> myFunction( ); 

 

와 같이 사용할 수 있는데요.

이것은 객체가 한개 밖에 없는 것이라고 생각되어 집니다.

 

제가 이해한 것이

load -> library    :   객체 생성

myclass -> myFunction :  객체 사용

 

으로 이해했습니다.

 

 

 

 

그런데, 또다른 객체를 만들려면 어떻게 해야 하나요? 

 

$myClass_1 = new myclass( );
$myClass_2 = new myclass( );

$myClass_1 -> myFunction( );
$myClass_2 -> myFunction( );

 

와 같이 여러 객체를 만들려면 codeigniter 에서는 어떻게 해야 할까요?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 다음글 페이지네이션 질문이요 (페이징과 글내용을 한 페이지에.... (1)
 이전글 php 5.2 -> 5.3 버전업 하고 memor... (6)

댓글

한대승(불의회상) / 2016/02/03 18:03:57 / 추천 0

올려주신 예문대로 하시면 됩니다.

$this->load->library('myclass');

$myClass_1 = new myclass( );
$myClass_2 = new myclass( );

$myClass_1 -> myFunction( );
$myClass_2 -> myFunction( );

 

재빠른설계자 / 2016/02/03 18:12:09 / 추천 0

답변 감사드립니다.

 

아직 개념이 헷갈려서 다시 여쭤 보는데요,

아래 코드 중에서 4줄과 6줄의 차이는 무엇인가요?


$this->load->library('myclass');
 
$myClass_1 = new myclass( );
$myClass_1  -> myFunction( );

$this -> myclass -> myFunction( );

 

 

 

 

 

한대승(불의회상) / 2016/02/04 07:56:00 / 추천 0

4번줄 메소드내에서 선언한 일반변수에 생성된 myclass 객체를 사용한다.

6번줄 Controller 의 멤버변수에 생성된 myclass 객체를 사용한다.

 

$myClass 를 호출 할 수 있는 범위가 메소드내로 제한 됩니다. 즉 다른 메소드내에서는 사용이 불가능 하죠.

$this->myclass 는 호출 할 수 있는 Controller 내의 모든 메소드로 확장 됩니다.

재빠른설계자 / 2016/02/04 09:30:08 / 추천 0

친절한 답변 감사드립니다!!!

kaido / 2016/02/04 10:20:42 / 추천 0

저도 아리송 했었는데, 사이다 같은 답변 감사합니다 ! ㅎㅎ

 

그래서 인지 $this->load  이 녀석의 특징은 같은 객체를 여러번 호출하면 1개만 생성되어서 관리 되더군요.

 

한대승(불의회상) / 2016/02/04 12:17:44 / 추천 0

@kaido 싱글톤 이라는 디자인 패턴이 적용되어 있어서 입니다.

같은 라이브러리를 호출 할 때마다 생성한다면 메모리 가용량이 줄어 드니까요.