선생님을 위한 프로그래밍 수업

접근 제어자 (access modifier)

토픽 선생님을 위한 프로그래밍 수업 > 웹 애플리케이션 만들기 > PHP

수업소개

이번 수업에서는 캡슐화(encapsulation)이라는 것을 알아봅니다. 캡슐화는 객체의 사용자에게 필요한 정보나 기능만을 노출시켜서 객체를 보다 사용하기 쉽도록 하고, 객체가 고장나지 않도록 하는 여러가지 방법들입니다. 결과적으로 객체를 좋은 부품으로 만드는데 많은 도움을 줍니다.

객체지향 프로그래밍에서 접근제어자(access modifier) 혹은 속성의 가시성(property visibility)이라는 것은 캡슐화를 달성하는데 중요한 기능을 제공합니다. 

수업

<?php
class MyFileObject{
  private $filename;
  function __construct($fname){
    $this->filename = $fname;
    if(!file_exists($this->filename)){
      die('There is no file '.$this->filename);
    }
  }
  function isFile(){
    return is_file($this->filename);
  }
}
$file = new MyFileObject('data.txt');
// $file = new MyFileObject();
// $file->filename = 'data.txt';
var_dump($file->isFile());
var_dump($file->filename);
?>
<?php
class Person{
  private $name;
  function sayHi(){
    print("Hi, I'm {$this->name}.");
  }
  function setName($_name){
    if(empty($_name)){
      die('I need name');
    }
    $this->name = $_name;
  }
  function getName(){
    return $this->name;
  }
}
$egoing = new Person();
$egoing->setName('egoing');
$egoing->sayHi();
print($egoing->getName());
?>
<?php
class Person{
  private $name;
  public function sayHi(){
    print("Hi, I'm {$this->name}.");
  }
  public function setName($_name){
    $this->ifEmptyDie($_name);
    $this->name = $_name;
  }
  public function getName(){
    return $this->name;
  }
  private function ifEmptyDie($value){
    if(empty($value)){
      die('I need name');
    }
  }
}
$egoing = new Person();
$egoing->setName('egoing');
$egoing->sayHi();
print($egoing->getName());
?>

 

댓글

댓글 본문
  1. 24.01.05 접근제어자.
  2. 드림보이
    2022.01.22. 접근 제어자 (access modifier) 파트 수강완료
  3. ggyuker
    2022.01.21 수강완료
  4. jeisyoon
    2021.08.08 Access Modifier - OK
  5. 그리드
    기본이 public (기본값) 이고, 외부에 공개하고 싶지 않을 때 private를 쓰는 것이 맞는거 같아요!
    대화보기
    • 손가락신
      private public 개념을 이제야
      재대로 이해 했습니다.
      정말 감사합니다.
    • Mei Park
      기본은 private
      필요할 때 public
    • mirong1
      감동의 도가니였습니다.!!
    • phpmaster
      private과 public의 이해도가 한층 더 높아진 정말 좋은 강의동영상이였습니다!!
    • uki408
      var_dump($file->filename) 이것은 특이하게 돌아가는지 의문이네요. echo 나 print_r 은 에러 화면이 출력되는데,var_dump는 되는게 의문입니다.
    • dufuqsls
      잘봤습니다.
    • 폭스킴
      비유가 적절해서 이해가 쏙쏙 ^^