PHP

접근 제어자 (access modifier)

수업소개

이번 수업에서는 캡슐화(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. phpmaster
    private과 public의 이해도가 한층 더 높아진 정말 좋은 강의동영상이였습니다!!
  2. uki408
    var_dump($file->filename) 이것은 특이하게 돌아가는지 의문이네요. echo 나 print_r 은 에러 화면이 출력되는데,var_dump는 되는게 의문입니다.
  3. dufuqsls
    잘봤습니다.
  4. 고맙습니다~
  5. 폭스킴
    비유가 적절해서 이해가 쏙쏙 ^^
버전 관리
egoing
현재 버전
선택 버전
graphittie 자세히 보기