클래스에서 변수,상수 사용방법과 상위(부모)의 상수 사용방법 > PHP
PHP

클래스에서 변수,상수 사용방법과 상위(부모)의 상수 사용방법

조회 27회 댓글 0건

private는 현재 자신의 클래스에서만 사용이 가능하다. 상속이 안된다.
하위클래스에서 사용하고 싶으면 중간 클래스에서 받아서 그 하위에서 사용 할 수 있게 전달해 주면 된다.
상속시 변수, 상수를 하위 클래스에서 사용해야 된다면 public 또는 protected 를 사용하면 된다.

클래스 상속시 변수,상수 사용

PHP에서는 상속 체인을 따라 부모의 부모, 그리고 그 이상의 상위 클래스에 정의된 변수에 직접 접근하는 방법은 제공하지 않습니다.
parent:: 키워드를 사용하면 바로 위의 부모 클래스에만 접근할 수 있습니다.
그렇기 때문에 PHP에서는 부모의 부모 클래스 등 상위 클래스의 인스턴스 변수들을 자식 클래스에서 직접 참조하는 것은 불가능하며, 간접적인 방법을 통해야 합니다.

상수의 사용

PHP에서 상수를 참조할 때는 $this->를 사용하지 않습니다. 대신 self::, parent::, 또는 static:: 키워드를 사용합니다.

self::는 자신의 클래스에 정의된 상수나 정적 속성, 메소드에 접근할 때 사용합니다.
parent::는 부모 클래스에 정의된 상수나 정적 속성, 메소드에 접근할 때 사용합니다.
static::은 "late static binding"이라고도 하는데, 이것은 호출한 실제 클래스에 접근하게 해주며, 이 기능은 PHP 5.3.0부터 도입되었습니다.
따라서 상수를 참조하려면 $this-> 대신 위에서 언급한 키워드들을 사용해야 합니다.

상수를 자식 클래스에서도 사용하려면, protected 또는 public으로 선언해야 합니다.
그러나 일반적으로 상수는 변경되지 않아야 하므로, public보다는 protected를 사용하는 것이 좋습니다.

변수의 접근

변수에 접근하기 위해서는 $this-> 키워드를 사용합니다.
parent::는 상수, 정적 속성 또는 메소드에 대해서만 사용됩니다.

상위 클래스의 생성자 호출

부모 클래스의 생성자를 실행하기 위해 parent::__construct()를 사용합니다. 이것은 부모 클래스의 생성자 메서드를 호출하는 방법입니다.


/**
 * 클래스 상속시 상수,변수 사용 확인
 *  - 자식에서 부모의 상수를 호출 할때는 :: 이중콜론을 사용 한다.
 */
class GrandParent {
  // private는 자식에서 사용할 수 없다.
  protected const TEST = '할배-상수';
  // private $grandPrivate= '할배-변수-프라이빗'; // 하위클래서 접근이 안된다.
  protected $grandPtc  = '할배-변수-protected';
  public $grandPub     = '할배-변수-퍼블릭';
  function __construct() {
    echo 'className: ' . __CLASS__ . ' - 할배: ' . self::TEST . PHP_EOL;
    echo '--------------------------------------------------------' . PHP_EOL;
  }
}

class Parent1 extends GrandParent {
  protected const TEST = GrandParent::TEST;
  function __construct() {
    echo 'className: ' . __CLASS__ . ' - 할배1: ' . parent::TEST . PHP_EOL;
    echo 'className: ' . __CLASS__ . ' - 부모: '  . self::TEST . PHP_EOL;
    echo '--------------------------------------------------------' . PHP_EOL;
  }
}

class Child extends Parent1 {
  public function __construct() {
    echo 'className: ' . __CLASS__ . ' - 자식에서 부모 함수 호출:' . parent::__construct() . PHP_EOL;
    echo 'className: ' . __CLASS__ . ' - 자식에서 할배 상수 호출:' . GrandParent::TEST . PHP_EOL;
    echo 'className: ' . __CLASS__ . ' - 부모상수 호출: ' . parent::TEST . PHP_EOL;
    echo '--------------------------------------------------------' . PHP_EOL;

    // echo 'className: ' . __CLASS__ . ' - Child: ' . $this->$grandPrivate . PHP_EOL;
    echo 'className: ' . __CLASS__ . ' - 자식에서 할배 변수 호출: ' . $this->grandPtc . PHP_EOL;
    echo 'className: ' . __CLASS__ . ' - 자식에서 할배 변수 호출: ' . $this->grandPub . PHP_EOL;
    echo '--------------------------------------------------------' . PHP_EOL;
  }
}

new Child();  // Outputs: 123
exit;

 




  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
전체 161건 1 페이지
  • profile_image 프로그램을 변경 했는데 오류가 발생하고 잘못 되었다고 메시지가 나와 30분 가량 고생 했는데 원인은 갱신된것이 반영이 되지 않아서 였습니다.이런 경우에 문제가 될 수 있는것중 하나가 캐쉬 인데 우선 설정값으로 봤을 때는 몇 초면 해결이 되어야 하지만 그렇지 않기 때문에 다른 원이 있을 수 있습니다.하지만 확인해볼 수 있는것중 하나이기 때문에 PHP의 캐쉬를 사용하지 않아 보고 경과를 보는것도 방법이 될 수 있습니다.다음은 FTP를 이용하게 되면…
  • profile_image PHP 내장 클래스를 이용해서 간단한 방식으로 타임존의 시간을 변경하는 함수 입니다.아래 예는 UTC에서 KST(대한민국) 으로 변경하는데 9시간 차이나는 것을 확인 하면 됩니다.아래는 각 국가별 타임존 변경시 필요한 정보 입니다.List of Supported Timezones https://www.php.net/manual/en/timezones.php   /**   * 타임존 변경   *    * @param string $time  …
  • profile_image 이중콜론은 상수와 static 변수인 경우 사용이 가능 하다 . 아래 예제를 보면 이중콜론(더블콜론) 사용에 대한 이해가 쉽습니다.단 주의할것은 이중콜론 보다는 $this 부분에서 어디서 사용 하느냐에 따라 달라지는 경우가 있습니다. class ParentClass {  const T1 = '상수 - parent' . PHP_EOL;  function test() {    // 현재 이것을 의미하기 때문에 현재 객체가 된다.    // 하위에서…
  • profile_image 내장함수인 is_readable 함수는 파일이 있는지 그리고 읽을 수 있는 권한이 있는지 까지 체크를 해주는 함수인데 URL 체크기능은 없어 만들어진 클래스 입니다.USER_AGENT는 자주 변경 될 수 있어 외부의 글로벌 변수가 있으면 그것을 사용 합니다.그리고 ssl 인증서 무시할것인지. 네트워크를 통한 접속의 시간을 제한페이지가 이동 되었을때 자동으로 찾아서 이동 할것인 선택하는 옵션이 있습니다.  class PabburiUtil   { …
  • profile_image 프로그램을 하다보면 현재 디렉토리의 위치나 현재 실행되고 있는 함수나 클래스명을 알고 싶을때가 있는데 아래는 클래스명을 알 수 있는 2가지 방법에 대한 것입니다.   현재의 클래스명 가져오는 방법 현재 클래스의 이름을 가져오려면 get_class() 함수 또는 CLASS 매직 상수를 사용할 수 있습니다.   get_class() 함수 이 함수는 인스턴스가 주어지면 해당 인스턴스의 클래스 이름을 반환합니다. 인자 없이 호출하면 현재 객체의 클래…
  • profile_image 배열의 데이터를 기준으로 각각 오름차순, 내림차순 처리를 할 수 있는 함수 입니다.샘플 데이터에선 이름, 나이, 몸무계로 확인이 가능 합니다.  /**   * sort_data   *   * @param array $data   * @param bool $nameAscending   * @param bool $ageAscending   * @param bool $weightAscending   *   * @return array   *   */…