클래스 정의
<?php
class User{ // user 클래스 선언
public $id, $email, $name, $birthday; // public으로 변수 선언
function printUser(){ // User 클래스에 printUser 메소드 선언
print_r($this); // User 클래스 Print
}
}
?>
객체 생성
→ 객체를 생성하려면 new 키워드 사용
<?php
$object = new User;
class User{ // User 클래스 선언
public $id, $email, $name, $birthday; // public으로 변수 선언
function printUser(){
print_r($this);
}
}
?>
객체 접근
: 객체의 속성에 접근 하는 방법은 -> 를 사용하는 것이다
new 로 생성한 User 클래스를 대입한 $object의 name 속성에 접근하기 위해서는
$object->name
또는 객체의 메소드인 printUser()에 접근하기 위해서는
$object->printUser(); 이렇게 해야함
※ 속성이나 메소드에 접근할 때에는 $ 표시 붙이는 게 아님!!
$를 붙이면 해당 변수를 가르키기 때문에 의도하지 않은 접근이나 오류를 발생시킬 수 있음,
<?php
$object = new User;
$object->printUser();
$object->id="3";
$object->name="jun";
$object->printUser();
class User{
public $id, $name, $birthday;
function printUser(){
print_r($this);
}
}
?>
객체 복제
new로 객체를 생성하여 매개변수로 넘길때에는 참조로 넘어간다
-> 새로운 메모리를 할당하는 것이 아닌 값을 전달하는 것!
-> 객체를 대입하는 것은 복사하는 것이 아님
참조로 주소값을 전달하면 같은 메모리의 인스턴스를 사용하기 때문에 한쪽에서 객체의 속성에 접근하여 값을 변경하면 다른 변수에서 해당 속성에 접근해도 같이 변경되어 있다.
새로운 객체의 복제를 원한다면 clone 키워드를 사용하면 됨.
<?
$object = new User(); // User 객체 생성하여 object1 변수에 대입
$object1->name = "jun"; // object1 객체의 name 속성에 jun 대입
$object2 = $object1; // object1 객체의 참조값 object2에 대입
$object2->name = "chan"; // object2 객체의 name 속성에 chan대입
echo "object1 name".$object->name."<br>"; // chan 출력
echo "object2 name".$object->name."<br>"; // chan 출력
$object3 = clone $object1; // object1 객체를 복제하여 object3에 대입
$object3->name="Ten"; // object3 객체의 name 속성에 Ten 대입
echo "object1 name=".$object->name."<br>"; // chan 출력
echo "object3 name=".$object3->name."<br>"; // Ten 출력
class User{
public $id, $email, $name, $birthday;
function printUser(){
print_r($this); // User 클래스 print
}
}
?>
생성자 __construct()
새로운 객체를 생성할 때 매개변수의 리스트를 호출되는 클래스로 전달될 수 있다.
이것은 여러가지 속성을 초기화하는 생성자(Constructor)라고 하는 클래스 내에 특별한 메소드로 전달됨
생성자는 __construct() 를 메소드 이름으로 사용
<?
$object = new User();
echo $object->name;
class User{
public $id, $email, $name, $birthday; // public으로 변수 선언
function __construct(){ // 생성자 선언
$this->name = "jun"; // 객체가 생성되면서 name 속성에 jun 대입
}
function printUser(){ // User 클래스에 printUser 메소드 선언
print_r($this); // User 클래스 print
}
}
?>
Q: 굳이 생성자를 사용하는 이유는?
소멸자 _destruct()
PHP 코드가 마지막 참조를 하고 났을때나 스크립트가 끝에 도달한경우 소멸자를 실행하며, 객체를 해제
소멸자 메소드는 __destruct()
<?
$object = new User();
echo $object->name;
class User(){
public $id, $email, $name, $birthday;
function __construct(){
$this->name = "jun";
}
function __destruct(){
echo "User 객체 소멸";
}
function printUser(){
print_r($this);
}
}
?>
'PHP' 카테고리의 다른 글
PHP 자주 사용되는 서버 정보 변수 (0) | 2021.02.10 |
---|---|
[PHP] 세션과 쿠키 / array에 key, value 값 추가하기 (0) | 2021.02.09 |
php 파일 내용 포함시키기 (include/include_once) (0) | 2021.01.24 |
[PHP] 비밀번호 암호화, 비밀번호 체크하기 (0) | 2021.01.12 |
[PHP] 로그인 기능 구현하기 (0) | 2021.01.12 |
댓글