몽상실현개발주의

[생활코딩] 17.9 클래스 멤버 만들기 (static) 본문

Language/php

[생활코딩] 17.9 클래스 멤버 만들기 (static)

migrationArc 2021. 6. 8. 14:32

[생활코딩] 17.9 클래스 멤버 만들기 (static)

생활코딩 php 강좌

17. PHP의 객체 지향 프로그래밍

17.9 클래스 멤버 만들기 (static)

  • Member : Instance 에 소속된 속성(변수)과 Method 를 의미

 

<?php
class Person{
    private $name;
    private $count = 0;
    private static $staticCount = 0;
    function __construct($name)
    {
        $this->name = $name;
        $this->count = $this->count+1;
        self::$staticCount = self::$staticCount + 1;
    }
    function enter(){
        echo "<h1>Enter ".$this->name." privageCount:
        {$this->count}th</h1>";
        // 각각의 instance 내부에서만 유효하기 때문에, count 가 증가하지 않음
    }

    function staticEnter(){
        echo "<h1>Enter ".$this->name." staticCount:"
        .self::$staticCount."th</h1>";
    }

    static function getCount(){
        return self::$staticCount;
    }
}

$p1 = new Person('egoing');
$p1->enter();
$p1->staticEnter();

$p2 = new Person('leezche');
$p2->enter();
$p2->staticEnter();

$p3 = new Person('duru');
$p3->enter();
$p3->staticEnter();

$p4 = new Person('taiho');
$p4->enter();
$p4->staticEnter();

echo Person::getCount();
?>
$p1 = new Person('egoing');
$p1->enter();
$p1->staticEnter();

$p2 = new Person('leezche');
$p2->enter();
$p2->staticEnter();

$p3 = new Person('duru');
$p3->enter();
$p3->staticEnter();

$p4 = new Person('taiho');
$p4->enter();
$p4->staticEnter();

echo Person::getCount();
?>
  
  
// Enter egoing privageCount: 1th
// Enter egoing staticCount:1th
  
// Enter leezche privageCount: 1th
// Enter leezche staticCount:2th
  
// Enter duru privageCount: 1th
// Enter duru staticCount:3th
  
// Enter taiho privageCount: 1th
// Enter taiho staticCount:4th
  
// 4
  • private 로 선언한 $count 는 instance 내부에서만 유효 하므로, 값이 증가하지 않음
    • 각각의 생성된 instance 에 소속 되어 있는 instance property
    • instance 내부의 변수 각각의 instance 가 생성 될 때, 동적(dynamic) 으로 생성 됨
  • private static 으로 선언한 $staticCount 는 모든 instance 가 상태를 공유하므로, instance 가 생성 될 때마다 값이 증가
    • Person class 에 소속되어 있는 class property
    • 모든 instance 가 상태를 공유
  • static function 은 class 에 소속됨 method 로 instnace 생성하지 않고, class 를 통해 직접 호출 가능
    • echo Person::getCount();
  • static 은 class 소속의 member (변수 + 함수) 를 정의할 때 사용
    • static 이 없는 경우는 instance 의 member 를 정의
  • class 내에서 자기 자신을 의미하는 것은 self
    • instance 내에서 자기 자신을 의미하는 것은 $this
  • class member 는 :: 사용
    • instance member 는 -> 사용

 

 

 


이 글의 모든 사진과 내용의 출처는 생활코딩에 있음을 알려드립니다.

http://www.inflearn.com/course/%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9-php-%EA%B0%95%EC%A2%8C/lecture/230?tab=note

 

생활코딩 - PHP 기본 A 부터 Z 까지 - 인프런 | 학습 페이지

지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....

www.inflearn.com

 

 

Comments