>백엔드 개발 >PHP 튜토리얼 >PHP 객체 지향(OOP) - 객체 인스턴스화

PHP 객체 지향(OOP) - 객체 인스턴스화

WBOY
WBOY원래의
2016-08-08 09:23:131110검색

$Object 이름 = 새 클래스 이름();

class Person
{
//다음은 해당 인물의 구성원 속성입니다
var $name; //본인의 이름
var $sex; //본인의 성별
var $age
// 다음은 person의 멤버 메소드입니다
function say() { //이 사람이 말할 수 있는 메소드
echo "This person is talk";
}
function run() { / /이 사람은 걷는 방법
echo "이 사람은 걷고 있습니다";
}
}
$p1=new Person();
$p2=new Person();
$p3= new Person();
?>

$p1=new Person();

이 코드는 다음을 통해 인스턴스 객체를 생성합니다. 클래스 프로세스에서 $p1은 인스턴스화하는 개체의 이름입니다. 마찬가지로 $p2 및 $p3도 인스턴스화하는 개체의 이름입니다. 클래스는 여러 개체를 인스턴스화할 수 있으며 각 개체는 위의 코드와 동일합니다. 이 예에는 세 사람이 있는데, 각 사람 사이에는 아무런 연관성이 없습니다. 그것은 모두 인간이라는 것을 의미할 뿐입니다. 각 사람은 자신의 이름, 성별, 나이 속성을 가지고 있습니다. 동일한 클래스이므로 이에 반영된 멤버 속성과 멤버 메서드는 인스턴스화된 객체에 포함됩니다.

정수 및 부동 소수점 유형과 같은 PHP의 객체도 데이터 클래스입니다. 이들은 다양한 유형의 데이터를 저장하는 데 사용됩니다. 그런 다음 객체는 어떻게 반영됩니까? 메모리? 논리적으로 말하면, 메모리는 대략 4개의 세그먼트, 즉 스택 공간 세그먼트, 힙 공간 세그먼트, 코드 세그먼트 및 초기화된 정적 세그먼트로 나누어집니다. 프로그램의 서로 다른 선언은 서로 다른 메모리 세그먼트에 사용됩니다. 저장 공간 길이가 같고 공간을 적게 차지하는 데이터 유형(예: 정수 1, 10, 100, 1000, 10000, 100000 등은 메모리에서 동일한 길이의 공간을 차지하며 모두 64비트와 4바이트입니다. 그렇다면 데이터 길이가 가변적이고 많은 공간을 차지하는 데이터 유형의 데이터는 해당 메모리 세그먼트의 어디에 배치되어야 할까요? 이러한 데이터는 힙 메모리에 저장됩니다. 스택 메모리에는 직접 액세스할 수 있지만 힙 메모리에는 직접 액세스할 수 없습니다. 우리 객체의 경우 대용량 데이터 타입이고 가변 길이의 공간을 차지하므로 객체는 힙에 배치되지만 객체 이름은 스택에 배치되므로 객체 이름을 통해 객체를 사용할 수 있습니다. .

$p1=new Person();

이 코드에서 $p1은 스택 메모리의 객체 이름이고, new Person()은 힙 메모리의 실제 객체입니다. 자세한 내용은 , 아래 그림을 참조하세요.

PHP 객체 지향(OOP) - 객체 인스턴스화

위 그림에서 알 수 있듯이 $p1=new Person(); 힙에 있는 실제 객체 인스턴스 메모리에 있는 엔터티의 경우 위 그림에서 new Person()이 3번 있으므로 힙에 3개의 공간이 열리고 각 객체마다 3개의 인스턴스 객체가 생성됩니다. 서로 독립적이며 자체 공간을 사용합니다. PHP Inside에서는 새 키워드가 나타나는 한 개체가 인스턴스화되고 자체 공간이 힙에 생성됩니다.

힙의 각 인스턴스 개체는 속성을 저장합니다. 예를 들어 힙의 인스턴스 개체는 이제 모든 저장소 이름, 성별 및 연령을 저장합니다. 각 속성에는 주소가 있습니다.

$p1=new Person(); 등호 $p1의 왼쪽은 참조 변수입니다. 객체의 첫 번째 주소는 할당 연산자 "=를 통해 참조 변수 "$p1"에 할당됩니다. "이므로 $p1 객체의 첫 번째 주소를 저장하는 변수입니다. $p1은 스택 메모리에 배치됩니다. $p1은 힙에서 객체를 가리키는 포인터와 동일하므로 객체를 통해 연산할 수 있습니다. 참조 변수 $p1. 일반적으로 객체 참조를 객체라고도 합니다.

위 내용은 "꼬마튀김땅콩" 형제님의 글을 인용한 내용입니다. 공유해주셔서 감사합니다.

위 내용은 내용의 측면을 포함하여 PHP 객체지향(OOP) 인스턴스화 객체를 소개하는 내용이 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.