티스토리 뷰

1. 개념
extends 역할
extends는 상속이라는 개념으로 기존의 클래스를 가져와서 자신의 클래스에서 사용할 수 있도록 하는 것
기존에 있는 클래스에 있는 변수나 함수는 건들지 않고 자신의 클래스에서 필요한 경우 상속 받은 클래스의 변수나 함수 말고도 변수나 함수를 추가할 수 있기에 확장이 용이함
2. 예제
extends 예시
PHP 코드
parent.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
class Testparent
{
public $p_name ;
 
//인스턴스를 생성할 때 자동으로 호출하는 함수
function __construct( $name )
{
$this -> p_name = $name ;
}
 
public function par_name()
{
print_r( "부모님의 이름은 { $this -> p_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
<?php
 
//parent.php에 클래스 파일 읽기
require_once ( "parent.php" );
 
//TestMe 클래스를 생성할 때 parent.php에 있는 TestParent클래스 상속
class TestMe extends TestParent
{
//TestMe에서 생성한 me_name 함수
public function me_name( String $name )
{
print_r( "저의 이름은 { $name } 입니다." );
}
}
 
//인스턴스 생성시 초기값을 전달->__construct 호출
$test = new TestMe( "유저1 부모" );
 
//TestParent에 있는 par_name함수 출력
print_r( $test ->par_name());
 
print_r( "<br><br>" );
 
//TestMe에 있는 me_name함수 출력
print_r( $test ->me_name( "유저1" ));
 
?>
결과 화면
코드 설명
extends를 사용하면 본인의 클래스에서 상속받은 클래스의 함수나 변수 등을 사용할 수 있습니다.
위에 보시면 test 변수에 new TestMe라고 인스턴스를 생성할 때 초기값을 유저1부모를 넣어두었습니다.
하지만 실제로는 초기값을 자동으로 호출하는 __construct 라는 함수TestMe 클래스에 존재하지 않습니다.
그러함에도 불구하고 에러가 나지 않는 것은 TestParent라는 클래스를 가져와서 거기에 있는 __construct를 사용한 것입니다.
par_name 함수 또한 TestParent 클래스에 존재하는 함수인데 상속을 하였기 때문에 사용이 가능합니다.
이렇듯 extends를 사용해서 다른 클래스에 있는 변수나 함수를 이용하면 나중에 코드를 작성하고 유지보수 할 때 더 쉽게 할 수 있으리라 생각이 듭니다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday