코딩동강

[PHP-생코] PHP 7강 - 접근제어자 = 속성의 가시성(property visibility) ※ 캡슐화(encapsulation)

940


접근 제어자 1 - 개념

 

접근제어자(access modifier) = 속성의 가시성(property visibility) 

캡슐화 달성 수단 중 하나.

 

캡슐화(encapsulation)

객체 사용자에게 필요한 정보/기능만 노출시켜서, 편의성 및 안정성 높이는 작업.

 

 

 

 

접근 제어자 2 (private vs public)


<?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);

?>

 

 

 

접근 제어자 3 - (private vs public)

 

<?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());

?>

 


접근 제어자 3 (method visibility)

 

<?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());

?>

 

https://opentutorials.org/module/6/15730

 

PS.

 

Visibility 

https://www.php.net/manual/en/language.oop5.visibility.php

 

접근제어자

https://homzzang.com/b/php-1065

 

 


분류 제목
JS-바위 JS 80~82강 - 자바스크립트 객체 클래스
JS-바위 JS 77~79강 - 자바스크립트 모듈 활용 (Javascript Module)
JS-바위 JS 73~76강 - 테이블 페이지네이션 (Table Pagination)
JS-바위 JS 72강 - AOS 라이브러리 - 슝슝 나타나는 스크롤 애니메이션
JS-바위 JS 69~71강 - 숫자 그래프 애니메이션 (Number Animation)
JS-바위 JS 68강 - animate.css 라이브러리 - 스크롤이벤트 적용
JS-바위 JS 64~67강 - tailwindcss (node js - CSS framework) - CSS 없이 스…
JS-바위 JS 61~63강 - 최신 JS 문법 (ECMA SCRIPT 6) - 변수선언 키워드 let, const, …
JS-바위 JS 60강 - 인스타그램 (instagram) API - 인스타그램 피드를 웹사이트에 출력
JS-바위 JS 56~59강 - 쿠키 (Cookie) 이용해 「오늘 하루 안보기 팝업창 띄우기」 생성
JS-바위 JS 52~55강 - 멀티플 슬라이드 (Multiple Slideshow)
JS-바위 JS 51강 - 스크롤트리거 (scrollTrigger) - 스크롤 애니메이션 구현
JS-바위 JS 46~50강 - 필터링 반응형 갤러리 (Fitered Gallery)
JS-바위 JS 45강 - 하이라이트 무빙 탭 애니메이션 (Highlight Moving Tab animation)
JS-바위 JS 42~44강 - 풀스크린 슬라이드 (FullScreen Slide) 1 - CSS로만 구현
1/47
목록
 홈  PC버전 로그인 일본어
웹디자인언어 1
서버관리언어
고급코딩언어
그누보드
제작의뢰
Q&A
커뮤니티 3
웹유틸
회원센터
홈짱 PC버전 로그인