인스턴스 생성하기

선언한 클래스를 사용하려면 인스턴스를 생성합니다.
인스턴스를 생성하면 클래스의 객체 변수가 생성됩니다.
앞에서 선언한 클래스는 쉽게 말해 도장이라고 생각하시면 됩니다.
즉 하나의 틀
도장을 빨간색 인주에 찍으면 빨간색으로 찍히고, 초록색 인주에 찍으면 초록색으로 찍히고 ...
즉 위의 자동차클래스는 하나의 틀이라 생각하여 도요타 자동차도 만들 수 있고, 벤츠, 혼다, 포르쉐의 기술을 넣어 포르쉐 만들 수 있다는 의미입니다.
인스턴스는 클래스 외부에서 선언하며 new 키워드를 사용합니다.

인스턴스 생성 방법

$변수명 = new 클래스명;

그럼 앞의 강좌에 이어서...

앞에서 선언한 자동차 클래스의 인스턴스를 생성해 볼게요.

<?php
    class Car
    {
        public $wheels;
        public $doors = 4;
        protected $color = 4;
        private $size;
        private $company;

        public function run()
        {
            return "자동차가 달립니다.";
        }

        protected function stop()
        {
            return "자동차가 멈춥니다.";
        }

        protected function turn()
        {
            return "자동차가 회전합니다.";
        }
    }
    $honda = new Car;
?>

그럼 위의 코드에서 honda 인스턴스가 어떤 객체를 갖고 있는지 var_dump()를 통해서 확인해 볼까요?

<?php
    class Car
    {
        public $wheels;
        public $doors = 4;
        protected $color = 4;
        private $size;
        private $company;

        public function run()
        {
            return "자동차가 달립니다.";
        }

        protected function stop()
        {
            return "자동차가 멈춥니다.";
        }

        protected function turn()
        {
            return "자동차가 회전합니다.";
        }
    }

    $honda = new Car;

    var_dump($honda);
?>

실행해보니 다음과 같은 출력물이 나오네요.
object(Car)#1 (5) { ["wheels"]=> NULL ["doors"]=> int(4) ["color":protected]=> int(4) ["size":"Car":private]=> NULL ["company":"Car":private]=> NULL }

인스턴스를 통해서 프로퍼티와 메소드에 접근해볼까요? 접근하려면 ->를 사용합니다.
honda 변수는 클래스의 외부에서 선언했죠, 그러므로 public으로 선언된 프로퍼티와 메소드에 접근할 수 있어요.

프로퍼티 사용하기

$변수명 = new 클래스명;
$변수명->프로퍼티;

주의할점은 프로퍼티 앞의 $는 빼고 사용합니다.

<?php
    class Car
    {
        public $wheels;
        public $doors = 4;
        protected $color = 4;
        private $size;
        private $company;

        public function run()
        {
            return "자동차가 달립니다.";
        }

        protected function stop()
        {
            return "자동차가 멈춥니다.";
        }

        protected function turn()
        {
            return "자동차가 회전합니다.";
        }
    }

    $honda = new Car;
    echo $honda->doors;

?>

doors프로퍼티의 값이 4를 확인 할 수 있죠.

이제 메소드를 불러볼까요?

메소드 사용하기

$변수명 = new 클래스명;
$변수명->메소드명();

메소드는 함수이기 때문에 메소드명 뒤에 꼭 ()를 붙여주세요. 안붙이면 프로퍼티로 인식해버립니다.

<?php
    class Car
    {
        public $wheels;
        public $doors = 4;
        protected $color = 4;
        private $size;
        private $company;

        public function run()
        {
            return "자동차가 달립니다.";
        }

        protected function stop()
        {
            return "자동차가 멈춥니다.";
        }

        protected function turn()
        {
            return "자동차가 회전합니다.";
        }
    }

    $honda = new Car;
    echo $honda->run();

?>

위 코드의 결과

접근제한자에 따라서 어디서 사용가능 한지 불가한지 알아야 더 학습효과가 높습니다.
이를 테스트 해볼게요 그럴려면 우선 상속을 알아야겠죠? 상속을 알아야 protected를 사용해 볼 수 있으니까요.
그럼 다음에는 상속에 대해서 알아보고 그 다음에 접근제한자를 테스트해봅시다.