클래스

클래스의 사용

by TheVOS posted Oct 03, 2019
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
원문출처 http://tcpschool.com/php/php_class_use

인스턴스의 생성

클래스가 선언되고 나면, 선언된 클래스로부터 인스턴스를 생성할 수 있습니다.

PHP에서는 new 키워드를 사용하여 인스턴스를 생성할 수 있습니다.

 

이때 클래스 이름을 통해 생성자로 필요한 인수를 전달할 수 있습니다.

문법

$객체이름 = new 클래스이름 ( 인수1, 인수2, ...);


클래스 멤버에 접근

클래스의 프로퍼티에 접근하거나 메소드를 호출할 때는 화살표 기호(->)를 사용합니다.

 

객체의 이름 뒤에 화살표 기호(->)를 붙이고, 접근하려고 하는 프로퍼티나 호출하고자 하는 메소드의 이름을 사용하면 됩니다.

문법

$객체이름 -> 프로퍼티 이름;

$객체이름 -> 메소드이름;

 

PHP에서는 프로퍼티와 메소드의 접근 범위를 제한할 수 있으므로, 클래스 외부에서는 접근 제어자에 따라 접근이 가능할 수도 있고 또는 불가능할 수도 있습니다.

 

또한, 객체 내부에서 해당 인스턴스의 프로퍼티에 접근하고 싶을 때는 특별한 변수인 $this를 사용할 수 있습니다.

$this 변수는 해당 인스턴스가 바로 자기 자신을 가리키는 데 사용하는 변수입니다.

문법

$this -> 프로퍼티이름;


접근 제어(access modifier)

객체 지향 프로그래밍에서 정보 은닉(data hiding)이란 사용자가 굳이 알 필요가 없는 정보는 사용자로부터 숨겨야 한다는 개념입니다.

그렇게 함으로써 사용자는 언제나 최소한의 정보만으로 프로그램을 손쉽게 사용할 수 있게 됩니다.

 

PHP에서는 클래스 멤버에 public, private, protected 키워드를 사용하여 각각의 멤버에 대한 접근 제어를 명시할 수 있습니다.

 

public으로 선언된 멤버는 외부로 공개되며, 해당 객체를 사용하는 어디에서나 직접 접근할 수 있게 됩니다.

private로 선언된 멤버는 외부로 공개되지 않으며, 해당 클래스의 멤버에서만 접근할 수 있습니다.

protected로 선언된 멤버는 상위 클래스에 대해서는 public 멤버처럼 취급되며, 외부에서는 private 멤버처럼 취급됩니다.

즉, 해당 클래스의 멤버와 해당 클래스를 상속받은 자식 클래스에서만 접근할 수 있습니다.

 

var 키워드를 사용하여 클래스의 프로퍼티를 정의하면, 해당 프로퍼티의 접근 제어는 public으로 자동 정의됩니다.

또한, 메소드를 작성할 때 접근 제어자를 생략하면 public으로 자동 정의됩니다.

예제

class ClassName
{
    public $publicVar;
    private $privateVar;

    protected $protectedVar;

 

    public function __constructor ( )
    {
        $this -> publicVar = "public property<br>";

        $this -> privateVar = "private property<br>";

        $this -> protectedVar = "protected property<br>";

    }

 

    public function publicMethod ( )
    {
        echo "public method<br>";

    }
    protected function protectedMethod( )
    {
        echo "protected method<br>";
    }
    private function privateMethod( )
    {
        echo "private method<br>";
    }
}


$object = new ClassName ( );


echo $object -> publicVar;      // 접근 가능
//echo $object->protectedVar; // 접근 불가능
//echo $object->privatev;     // 접근 불가능


$object -> publicMethod( );      // 호출 가능
//$object->protectedMethod(); // 호출 불가능
//$object->privateMethod();   // 호출 불가능

코딩연습 ▶

 

위의 예제처럼 외부에서는 접근 제어자가 public으로 명시된 프로퍼티와 메소드만을 호출할 수 있습니다.


정보 은닉(data hiding)

클래스 외부에서는 접근 제어 때문에 private 멤버나 protected 멤버로는 직접 접근할 수 없습니다.

하지만 public 메소드를 사용하면 해당 클래스의 private 멤버나 protected 멤버에도 접근할 수 있습니다.

 

이렇게 public 메소드는 private 멤버나 protected 멤버와 프로그램 사이의 인터페이스(interface) 역할을 수행합니다.

이렇게 외부에서 바로 데이터로 접근하지 못하게 하는 것을 정보 은닉(data hiding)이라고 합니다.

 

예제

class ClassName
{
    private $privateVar;

 

 

    public function __constructor ( )
    {
        $this -> privateVar = "private property";

    }


    public function getValue ( )
    {
        return $this -> privateVar;
    }


    public function setValue ( $value )
    {
        $this -> privateVar = $value;
    }
}
$object = new ClassName ( );
$object -> setValue ( "hello" ); // setValue() 함수를 통해 $private의 값을 변경할 수 있음.
echo $object ->getValue;     // getValue() 함수를 통해 $private의 값을 출력할 수 있음.

 

 

위의 예제는 클래스의 외부에서 public 메소드인 getValue()와 setValue() 메소드를 사용하여 해당 클래스의 private 멤버에 접근할 수 있음을 보여주고 있습니다.

Facebook [ko]댓글 


List of Articles
카테고리 아니오 제목 날짜 조회 수
EC-CUBE 3.x 39 新規作成したページURLから「user_data」を消す方法とURLを出力するテンプレートタグ file 2019.04.10 1029
EC-CUBE 2.x 38 EC CUBEで商品ごとに支払い方法を簡単に分ける file 2019.10.28 665
EC-CUBE 2系 37 EC-CUBE2.13カスタマイズ:新しいページを追加する file 2019.11.11 636
EC-CUBE 2系 36 EC-CUBE 2系の「もっと見る」を簡潔に 2020.01.02 624
EC-CUBE 4系 35 EC-CUBE4 계에서 관리 화면에 새 메뉴 항목을 추가하는 방법 file 2019.10.28 496
EC-CUBE 2.x 34 EC-CUBE에서 모든 페이지에서 로그인 체크하기 2019.11.11 450
팁 & 노하우 나눔 33 구글 캘린더 합치기 1 file 2018.12.12 427
EC-CUBE 4.x 32 EC-CUBE 4를 설치했을 때 설정 한 데이터베이스 암호는 어디에 저장되는 것입니까? 2019.11.14 388
EC-CUBE 2.x 31 商品数や階層に関係なく全カテゴリーを表示させる方法 file 2019.04.10 260
EC-CUBE 3.x 30 デフォルトのtitleを任意のものに変更する方法 file 2019.04.10 228
EC-CUBE 3系 29 관리 화면의 사이드 메뉴에 항목 추가하는 방법 file 2019.11.11 166
EC-CUBE 2系 28 EC-CUBE標準規約 2019.09.28 154
EC-CUBE 2系 27 リファクタリングガイドライン 2019.09.28 153
EC-CUBE 2系 26 EC-CUBE 2系で注文を受けた商品の規格を後で削除すると、管理画面で受注内容を編集できなくなる 2020.01.02 135
EC-CUBE 2系 25 ECCUBE 2.13のインストール方法をスクリーンショット付きでわかりやすく徹底解説! file 2019.10.10 132
EC-CUBE 2系 24 イベントセット販売プラグインマニュアル file 2019.11.07 131
EC-CUBE 2.x 23 EC-CUBE:SC_FormParamクラスによるパラメーターチェック方法 2019.10.03 119
메뉴얼 22 THEVOS Youtube BOARD SKIN 사용 설명 2018.11.11 116
CSS 21 Css 텍스트 외곽선 처리하기, Stroke 2019.11.28 111
EC-CUBE 2系 20 EC-CUBE 2系で商品情報をCSVで更新するとき関連商品情報が削除される 2020.01.02 104
Board Pagination Prev 1 2 Next
/ 2