[ php ] [ class ] 클래스( class )에서 지시자( -> )의 의미
페이지 정보
작성자 웹지기 댓글 0건 조회 20,985회 작성일 18-09-30 05:07본문
객체는 자신만의 변수와 함수 가질 수 있습니다. 객체에서 변수, 함수는 각각 멤버변수 , 메쏘드 라고 불립니다.
class test {
var $a; // 멤버변수 (클래스 안에서 변수를 정의 할때는 var를 반드시 적어 주어야 한다.)
var $b;
function aaa() { // 메쏘드 (클래스안의 함수를 메쏘드 라고 한다.)
$this->abcd = " 알파벳"; // 메쏘드안에서 변수 정의할 때는 $this를 붙혀 준다.
}
}
위와 같이 test 란 class 가 있고 이 class 를 사용하기 위해선 아래와 같이 객체를 생성합니다.
$obj = new test;
이제 $obj 에 새로운 객체하나가 생성되었고 이 객체는 $a, $b 라는 멤버변수와 aaa() 라는 메쏘드 하나를 포함하고 있습니다.
만약 멤버변수나 메쏘드를 사용하고 싶다면 아래와 같이 하시면 됩니다.
echo $obj->a; // 멤버변수 $a 값을 출력
$tmp = $obj->aaa(); // 메쏘드 aaa() 를 실행시키고 그 값을 $tmp 에 저장
-> 를 글로 해석할 때는 '무엇 안에 있는' 이라고 표현하면 해석이 편하리라 생각됩니다.
즉 $obj 안에 있는 $a 를 출력 , $obj 안에 있는 aaa() 실행
자 그럼 '->' 이것이 무엇을 하는 것인지 어느정도 감이 오시리라 생각됩니다.
이제 아래 예제를 보세요.
[code]
class test {
var $a;
var $b;
function aaa() {
echo $this->a;
}
}
[/code]
위와 같이 aaa() 메쏘드에서 자신이 속한 객체의 멤버변수 또는 메쏘드에 접근 또는 실행 시킬때는 this 키워드를 사용하게 됩니다. 이 this 는 단어 그대로 현재 객체를 뜻 하는 것입니다. 즉 외부 다른 객체의 변수, 메쏘드와 자신의 변수,메쏘드를 구분하는 것이라 생각하셔도 되죠...^^
자 그럼 질문 하신 내용에 있는 구문을 한번 봅시다.
$this->cut_str_size = $data->info->cut_str_size;
우선 앞에 있는 것 부터 보면...
"현재 객체 안에 있는 cut_str_size 멤버변수에" 라고 해석할 수 있겠습니다.
그럼 이 멤버변수에 무엇을 저장하느냐?
"$data 객에 안에 있는 info 객체 안에 있는 cut_str_size 멤버변수의 값" 을 저장해라.
* 참고로 -> 를 사용하면 그 앞에 있는 것은 무조건 객체가 됩니다.
그리고 info 가 왜 객체 인지는 $data 가 생성되는 부분을 보시면 확인하실 수 있을텐데요.
DB 쿼리 후 fetch() 라는 메쏘드를 이용하고 있습니다. 그런데 이 fetch() 라는 메쏘드에서는
mysql_fetch_object() 이란 php 함수를 사용하고 있습니다. 그리고 이 함수는 리턴값으로 객체를 반환합니다.
즉 $tmp = mysql_fetch_object($result); 이렇게 하게되면 $tmp 값에는 객체가 저장이 되고
값을 사용하고 싶다면 $tmp->필드명 식으로 접근 하게됩니다.
이제 $data->info->cut_str_size 를 이해하실 수 있을꺼라 생각되네요...^^
$cond_list = "module_srl = '{$module_srl}'";
위 라인은 그냥 $cond_list 에 module_srl = '$module_srl변수값' 문자열을 저장하는 것 뿐입니다.
$module_srl 변수값이 test 라면 module_srl = 'test' 이렇게 저장되죠.
$oDB->select('*','articles',$cond_list,$order,0,$rows);
위 라인은 $oDB 객에 안에 있는 select() 이란 메쏘드를 호출하고 있으며 select() 메쏘드가 실행될때 필요로 하는 인자들을 전달 하고 있는 라인입니다. 이 라인의 결과를 예측해 보시려면 select() 메쏘드를 확인해 보세요.
$tmp->url = zUrl::getViewUrl($tmp->article_srl);
마지막 이 라인은 $tmp 객체 안에 있는 url 멤버변수에...
zUrl 객체의 getViewUrl() 메쏘드의 실행 결과를 저장하라는 것입니다.
:: 는 new 라는 지시자로 class를 미리 객체화 시켜놓지 않고 사용하는 시점에서 객체가 생성되고 지정된 메쏘드가 실행되도록 하는 접근자 입니다.
댓글목록
등록된 댓글이 없습니다.