다른 객체 지향언와 유사하게 PHP에서도 클래스와 상속등을 지원합니다
(1) 클래스
클래스는 Java나 C++ 언어에서처럼 클래스 이름과 속성, 메소드가 포함
1) 기본사용
클래스 이름{
속성변수;
메소드;
}
class User{
public $name, $password;
function save_user(){
echo ("save user here.");
}
}
$user = new User();
2) 객체생성
- 클래스 : 전체적인 껍데기, 틀
- 객체 : 클래스(틀)에서 뽑아져 나와서 사용되는 실질적인 그것
[ 가장 쉬운예제 : 붕어빵틀(클래스), 붕어빵(객체) ]
위의 예제에서 처럼 객체를 사용하려면 $객체명 = new클래스 형식을 가집니다.
3) 객체접근
객체에 접근할때는 -> 라는 기호를 사용하여 변수(속성)와 메소드에 접근합니다.
(예제)
class User{
public $name, $password;
function save_user(){
echo ("save user here.");
}
}
$user = new User();
$user->name = "Kim";
$user->password = "pswd";
$user->save_user();
echo "<br>";
print_r($user);
4) 객체복제
객체를 넘길때 clone이라는 키워드를 이용해 복제할 수 있다
(잘못된 예제)
class User1{
public $name;
}
$user1 = new User1();
$user1->name = "Kim";
$user2 = $user1;
$user2->name = "Lee";
echo "<br>";
echo "$user1->name";
echo "<br>";
echo "$user2->name";
(결과)
Lee
Lee
(올바른 예제)
$user1 = new User1();
$user1->name = "Kim";
$user2 = clone $user1;
$user2->name = "Lee";
echo "<br>";
echo "$user1->name";
echo "<br>";
echo "$user2->name";
(결과)
Kim
Lee
5) 생성자와 소멸자
클래스를 만들때 인자를 미리 받아서 접근 가능
class User2{
public $name;
public function __construct($name){
$this->name = $name;
}
public function __destruct(){
echo "<br>";
echo "call destruct()";
}
}
$user2 = new User2("Kim");
echo "<br>";
echo $user2->name;
$user2->name = "Lee";
echo "<br>";
echo $user2->name;
(결과)
Kim
Lee
call destruct()
5) static 클래스 사용
static 키워드는 Java나 C++에서 사용하는 용도와 동일합니다.
클래스 호출시 참조 방식이 아니라 직접 메모리 참조 방식으로 메모리를 차지하나 직접적인 액세스가 필요한 경우 사용하나 모든 클래스를 이런 방식으로 사용하면 객체지향 클래스설계가 아닙니다
public static function print_static_name(){
echo "<br>";
echo "static get name function call";
}
6) 상수(constant) 사용
클래스 내에서 상수를 사용 가능하며 ,사용법은 self::상수명으로 사용합니다.
const DEFAULT = 1000;
public static function default(){
echo self::DEFAULT;
}
7) 클래스 활용예제
지금까지 테스트한 것을 종합적으로 코딩하여 보았습니다.
class User3{
public $name;
private $password;
const DEFAULT = 1000;
public function __construct(){
echo "<br>";
echo "call __construct()";
}
function set_password($password){
$this->password = $password;
}
function get_password(){
return $this->password;
}
public function __destruct(){
echo "<br>";
echo "call __destruct()";
}
function print_user()
{
echo "Password of $this->name : $this->password<br>";
}
public static function print_static_name(){
echo "<br>";
echo "static get name function call";
}
public static function default(){
echo self::DEFAULT;
}
}
$user3 = new User3();
$user3->name = "Kim";
$user3->set_password("pswd");
echo "<br>";
echo $user3->name;
$return_password = $user3->get_password();
echo "<br>";
echo $return_password;
$user3->print_static_name();
echo "<br>";
$user3->default();
(결과 )
call __construct()
Kim
pswd
static get name function call
call __destruct()
(2) 상속 (inheritance)
상속은 클래스와 동일하게 Java와 C++에서 사용하는 것과 동일합니다.
상속은 부모클래스와 자식클래스로 구성되어 부모의 속성을 그대로 가져와서 사용하도록 클래스를 설계하는 것으로
객체지향 프로그래밍에서 클래스와 함께 자주 사용되는 것입니다
(상속을 사용하는 예제)
class Car{
public $name;
public function save_name(){
echo "save your car name";
}
}
class Audi extends Car{
public $engine;
public function __construct($name,$engine){
$this -> name = $name;
$this -> engine = $engine;
}
public function print_display(){
echo "<br>";
echo "this car is $this->name, $this->engine";
}
}
$car = new Audi("audi a6","gasoline");
$car->print_display();
(결과)
this car is audi a6, gasoline
영상으로 보실분들은 아래 영상을 참조하세요
'테크노트 > PHP' 카테고리의 다른 글
PHP 날짜 함수 사용하기 (0) | 2021.12.03 |
---|---|
웹개발 - PHP 활용편 : 미니홈페이지 만들기 (0) | 2021.11.24 |
웹개발 - PHP 문법 배열편 (0) | 2021.11.15 |
웹개발 - PHP 문법 함수편 (0) | 2021.11.14 |
웹개발 - PHP 문법 제어문 (0) | 2021.11.14 |
댓글