【PHP】 public · protected · private 적당히 결정하지 않았습니까?

갑작스럽지만
메소드 앞에 붙인다 public·protected·private
적당히 결정하는 사람 없습니까?

네, 저입니다.

「이것은 아무데도 어디에서도 부르지 않는 생각이 들고 private로 좋을까.」
「으음 이것 후에 다른 곳에서 사용할 것 같네... 아니 미묘하다..

네, 저입니다.

그래서 이번에는 소위 액세스 한정자에 대해,
「가독성」이라고 하는 시점으로부터, 다시 생각하고 싶습니다.

우선, 안녕하세요.

· public ... 어디서나 액세스 가능
・private・・・상속처의 서브 클래스로부터 액세스 가능
· protected ... 그 클래스에서만 액세스 가능

네요.

그것은 알고 있습니다. 그것은 모두 알고 있습니다! !
알고 있는 것만으로 사용할 수 없다면, 무슨 의미가 있다고 합니까? ! !

하아 하아. . .
뭐야 이건. . .

이야기는 바뀌지만,
『인생』에는 어떻게 해도 바꿀 수 없는 것과 바꿀 수 있는 것이 있습니다.
과거의 위인들도 말하고 있습니다.

백성이야. 바꿀 수 없는 「과거」에 한탄한다면, 바꿀 수 있는 「미래」를 보지 않겠는가.
by 나폴레옹

다른 사람은 바꿀 수 없다. 바꿀 수 있다고 하면, 그것은 「자신」이다.
by 아들러

상대의 「이상」한 곳을 바꾸려고 하지 말고, 마음으로 받아들이자. 그렇다면 그것이 '사랑'으로 바뀌기 때문이다.
by 보라색

죄송합니다 거짓말입니다. 구구도 나오지 않습니다.

그런 느낌으로, 클래스 설계를 할 때도,
바꿀 수 있는 속성과 바꿀 수 없는 속성을
명확하게 정의해 두는 것이 좋습니다.

그럼 「인생」이 아니라 「규동」으로 생각해 봅시다.

◯ 가게의 규동을 부탁하고 카운터에 놓여졌습니다.
이 시점에서 바꿀 수있는 것과 바꿀 수없는 것은 무엇입니까?

"규동을 먹는데 바꿀 수 없는 것"
・밥의 양
・가격

"규동을 먹는데 바꿀 수 있는 것"
・홍생강의 양
・젓가락으로 먹을까, 숟가락으로 먹을까

GyuDon.php
class GyuDon {
    private $riceAmount = 200; // ごはんの量
    private $price = 350; // 値段
    public $beniSyoga = '3袋'; // 紅生姜の量
    public $useChopsticks = true; // お箸を使う
}

바꿀 수 없는 것이라고 하는 것은,
바꾸려고하면 화가 난다.

밥의 양을 바꾸자.

main.php
$gyudon = new GyuDon();

$gyudon->riceAmount = 300; // エラーが起きる

모두 상상해보십시오, 쇠고기 덮밥이 나온 후에,
역시 밥을 가득 채워달라고 부탁하면 확실히 싫은 얼굴을 하는군요.

다음으로 홍생강의 양을 늘려 보겠습니다.

main.php
$gyudon = new GyuDon();

$gyudon->beniSyoga = '10袋'; // エラーは起きない

네, 홍생강을 아무리 담아보겠지만, 누구에게도 화나지 않네요.

마지막으로



private, protected, public을 어쨌든,
바꿀 수 있는 것, 바꿀 수 없는 것, 라는 관점에서 결정하도록 하면,
보다 객체 지향을 깊이 이해할 수 있을까요?

그렇다면 모두 홍생강은 상식의 범위 내입니다.

좋은 웹페이지 즐겨찾기