ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 트레이트
    개발/php 2016. 8. 7. 11:49

    처음에 트레이트 라는 부분을 읽었을때

    인터페이스와 클래스에 역할을 둘다 할수 있다고 했을때 무슨소리인지 정말 헷갈렸는데 예제를 보고 쉽게 이해할수 있었다.

    원본언어인 자바에는 없는 영역이여서 그런가.


    일단 인터페이스를 만들면 무조건 구현하여야 하기때문에  다른클레스에서 각자 구현하고자 하는부분이 다를때는 상관없지만 같은 코드를 재구현 해야 한다고 하면 DRY 하지 못하다. (Do not repeat yourself)


    그리고 상속을 통해서 처리할때 리스코프 치환원칙을 (LSP) 에 어긋날수있다.

    그래서 처음에 트레이트를 접했을때

    그냥 클래스를 인스턴스에 올리고 인스턴스에서 꺼내쓰면 되지 않을까라는 생각을 했다가 , 그렇게 되면 상속과는 조금 다른 개념으로 접근되겠구나 라는 생각이 들었다.



    트레이트 예제가 길어서... 


    http://php.net/manual/kr/language.oop5.traits.php


    여기를 참조하길 바람....


    <?php


    trait Test

    {

    protected $name;


    protected $gender;


    }



    <?php

    class MyClass

    {

    use Test

    }



    트레이트의 use 키워드는 클래스 안에서 사용한다. 네임스페이스의 import 는 클래스 밖에서 사용한다. (중요)

    저렇게 선언만 하게되면 protected 제한자로 적어놓은 필드명들을 사용할수 있다 한다.



    '개발 > php' 카테고리의 다른 글

    PHP redis 연동  (0) 2018.11.09
    php 에서 한글포함 여부를 체크해보자  (0) 2018.11.09
    Php open_tag 관련  (0) 2016.08.13
    네임스페이스  (0) 2016.08.07
    PHP 엔진  (0) 2016.08.07
Designed by Tistory.