티스토리 뷰

1. 개념
parent::__construct 역할
parent::__construct는 상속을 받은 클래스(자식)에서 생성자를 정의할려고 하는데 상속을 하는 클래스(부모)에 생성자가 있을 경우에 부모 클래스의 생성자를 호출하여 처리하고자 할 때 사용
2. 예제
parent::__construct 예시
PHP 코드
parent.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
class Testparent
{
public $p_name ;
 
//인스턴스를 생성할 때 처음 호출하는 함수(생성자)
function __construct( $name )
{
$this -> p_name = $name ;
}
}
 
?>
main.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
 
//parent.php에 클래스 파일 읽기
require_once ( "parent.php" );
 
//TestMe 클래스를 생성할 때 parent.php에 있는 TestParent클래스 상속
class TestMe extends TestParent
{
public $me_name ;
 
//자식 클래스에서 생성자를 생성
function __construct( $par_name , $m_name )
{
//부모 클래스에 있는 생성자 호출하고 값 넘김
parent::__construct ( $par_name );
$this -> me_name = $m_name ;
}
 
public function all_name()
{
print_r( "me : { $this -> me_name } , parent : { $this -> p_name } " );
}
}
 
//인스턴스 생성시 초기값을 전달
$test = new TestMe( "유저1 부모" , "유저1" );
$test -> all_name();
 
?>
결과 화면
코드 설명
부모 클래스에서 변수나 함수를 상속을 받아 사용할 경우 생성자가 부모 클래스에 이미 존재하고 있음을 보게 됩니다.
그런데 자식 클래스에서도 생성자를 만들어서 사용할 경우에 부모 클래스에 있는 생성자와 자식 클래스에 있는 생성자가 겹치게 됨을 보게 됩니다.
입력한 초기값을 모두 하나의 클래스에서 처리한다고 하면 문제가 되지 않겠지만, 그렇지 않을 경우에는 고민이 되게 됩니다.
이럴 때 사용하는 키워드가 parent::__construct 입니다.
부모님의 이름은 parent.php에 있는 생성자 쪽으로 보내고 자신의 이름은 main.php에서 처리를 하게 될 때 자식 클래스에 있는 생성자를 생성하고 그 안에 위 키워드를 사용하여 부모 클래스에 있는 생성자를 호출하고 초기값을 보낼 수 있습니다.
그래서 위와 같은 코드를 작성하고 나의 이름과 부모님의 이름을 all_name이라는 함수로 출력한다고 하면 위에서와 같이 결과가 나옴을 알 수 있습니다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday