객체변수는 클래스를 통하여 인스턴스화된 객체변수를 통하여 메서드나 프로퍼티를 접근 및 호출합니다.
생성된 객체변수의 메서드와 프로퍼티를 호출하기 위해서는 접근 연산자 ->를 사용합니다. -> 기호는 객체 안에 있는 메서드와 프로퍼티를 접근하여 값을 설정하거나 호출할 수 있습니다.
$객체변수->메서드;
$객체변수->프로퍼티;
기존 다른 언어에서는 클래스 객체의 메서드 접근을 점(.)을 사용하기도 합니다. PHP 언어의 경우에는 -> 기호를 사용하는 차이점이 있습니다.
프로퍼티에 값을 저장하거나 읽어오기 위해서는 객체 접근이 필요합니다. 접근 기호를 통해 객체변수의 프로퍼티에 접근할 수 있습니다. 앞에서 설명한 것처럼 아래와 같이 작성하면 됩니다.
|문법|
$객체변수->프로퍼티;
하지만 프로퍼티 이름 앞에 $ 기호는 사용하지 않습니다.
$jiny->username = "hojin lee";
$name = $jiny->username;
위의 예제는 프로퍼티에 접근하여 값을 읽어오거나 저장하는 간단한 표현입니다. 접근 기호 ->만 넣어서 사용하면 됩니다.
간접 접근 위의 예와 접근 방식은 객체에 직접 프로퍼티를 접근하는 방법입니다. 또한 프로퍼티를 접근할 때 프로퍼티명 앞에 $를 쓰지 않았습니다.
만일 $를 포함하여 작성하면 프로퍼티명을 변수 값을 이용하여 호출하겠다는 의미입니다. $ 변수를 통해 간접적으로 프로퍼티에 접근하게 되는 것입니다.
$obj->$proertyName;
간접 접근은 가변적으로 프로퍼티를 선택하여 호출할 때 이용할 수 있습니다. 접근하려고 하는 프로퍼티는 $propertyName의 값의 이름입니다.
예제 파일 class-04.php
<?php
class JinyClass
{
public $age;
public $name;
}
$obj = new JinyClass;
// 프로퍼티에 값을 저장
$obj->age = 18;
// 프로퍼티의 값을 읽어옵니다.
echo "나이는 ".$obj->age." 입니다.<br>";
// 간접 프로퍼티 접근
// aaa 변수에 프로퍼티명을 설정 후에 간접적으로 접근함
$aaa = "name";
$obj->$aaa = "jiny";
// 프로퍼티의 값을 읽어옵니다.
echo "내 이름은 ".$obj->$aaa." 입니다.<br>";
?>
결과
나이는 18입니다.
내 이름은 jiny입니다.
위의 예제는 프로퍼티 간접 접근에 대한 실험입니다.
예에서 첫 번째 나이 부분은 직접 프로퍼티명을 입력하여 값을 설정하거나 읽어서 출력했습니다.
하지만 두 번째 이름은 변수에 프로퍼티명을 설정한 후에 간접적으로 프로퍼티를 선택하여 설정, 출력을 했습니다.
클래스의 함수인 메서드 접근은 프로퍼티 접근 방식과 유사합니다. 객체변수 뒤에 접근 연산자 ->를 통해 메서드를 호출할 수 있습니다.
|문법|
$객체변수->메서드();
예제 파일 class-05.php
<?php
class JinyClass
{
public $message;
public function setMessage($msg){
$this->message = $msg;
}
public function showMessage(){
return $this->message;
}
}
$obj = new JinyClass;
// 메서드를 호출합니다.
$obj->setMessage("hello world!");
// 메서드 호출 및 반환값
$msg = $obj->showMessage();
echo $msg . "<br>";
?>
결과
hello world!
위의 예처럼 메서드를 단독으로 호출할 수 있습니다. 또한 메서드의 반환값을 받아서 처리할 수도 있습니다.