5. 객체 인스턴스화 방법
위에서 객체지향 프로그램의 단위가 객체라고 했지만 객체는 클래스를 통해 인스턴스화됩니다. 객체를 인스턴스화합니다.
클래스를 정의한 후 new 키워드를 사용하여 객체를 생성합니다.
코드 조각
$对象名称= new 类名称(); <?php class Person{ //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say(){ //这个人可以说话的方法 echo "这个人在说话"; } function run(){ //这个人可以走路的方法 echo "这个人在走路"; } } $p1=new Person(); $p2=new Person(); $p3=new Person(); ?> $p1=new Person();이 코드는 클래스를 통해 인스턴스 객체를 생성하는 프로세스입니다. $p1은 우리가 인스턴스화하는 객체의 이름입니다. 마찬가지로 $p2 및
$p3도 우리의 객체입니다. 인스턴스가 나오는 개체의 이름, 클래스는 여러 개체를 인스턴스화할 수 있으며 각 개체는 독립적입니다. 위의 코드는 3명의 사람을 인스턴스화하는 것과 동일하며 각 사람 사이에는 연결이 없으며 그들이 모두라는 것만 보여줄 수 있습니다.
는 누구나 자신만의 이름, 성별, 나이 속성을 갖고 있으며, 클래스에 반영된 멤버 속성과 메소드만 있으면 인스턴스화할 수 있습니다. 다음과 같은 속성과 메서드가 포함되어 있습니다.
정수 및 부동 소수점 유형과 같은 PHP의 객체는 다양한 유형의 데이터를 저장하는 데 사용되는 데이터 클래스이기도 합니다.
런타임 중에 메모리에 로드되어야 하므로 객체가 메모리에 어떻게 반영됩니까? ? 메모리는 논리적으로
4개의 세그먼트, 즉 스택 공간 세그먼트, 힙 공간 세그먼트, 코드 세그먼트 및 초기화 정적 세그먼트로 나누어집니다.
프로그램의 다양한 선언은 서로 다른 메모리 세그먼트에 배치되며 스택 공간은 세그먼트 정수 1, 10, 100, 1000, 10000, 100000 등 같은 공간 길이를 차지하고 작은 공간
을 차지하는 데이터 유형을 저장하는 곳입니다. 메모리에서 차지하는 공간은 동일합니다. length,
둘 다 64비트와 4바이트입니다. 그러면 가변 길이를 가지며 많은 공간을 차지하는 데이터 유형의 데이터가 해당 메모리 세그먼트에 배치됩니다
? 이러한 데이터는 힙 메모리에 저장됩니다. 스택 메모리는 직접 접근이 가능한 반면, 힙 메모리는
직접 접근이 불가능한 메모리입니다. 우리의 객체는 큰 데이터 유형이고 가변 길이의 공간
을 차지하므로 객체는 힙에 배치되지만 객체 이름은 스택에 배치되므로 객체 이름은
입니다. 사용하기 위해.
$p1=new Person();
이 코드에서 $p1은 스택 메모리의 객체 이름이고, new Person()은 힙 메모리의 실제 객체입니다.
지정해 주세요. 아래 그림:
위 그림에서 볼 수 있듯이 $p1=new Person(); 등호 오른쪽이 실제 객체 인스턴스, 즉 힙 메모리의 엔터티입니다. 위 그림에서는 Person()이 3번 새로 생성되므로 힙에 3개의 공간이 열리고 3개의 인스턴스 개체가 생성됩니다. 각 개체
는 PHP에서 자체 공간을 사용합니다. 새로운 키워드가 나타나면
는 객체를 인스턴스화하고 힙에 자체 공간을 엽니다.
힙의 각 인스턴스 개체에는 속성이 저장됩니다. 예를 들어 이제 힙의 인스턴스 개체에는 성
이름, 성별 및 나이가 포함됩니다. 각 속성에는 주소가 있습니다.
$p1=new Person(); 등호 $p1의 오른쪽은 참조 변수입니다.
객체의 첫 번째 주소는 할당 연산자 "=를 통해 참조 변수 "$p1"에 할당됩니다. "이므로 $p1 객체의 첫 번째 주소를 저장하는 변수입니다. $p1은 스택 메모리에 배치됩니다. $p1은 힙에서 객체를 가리키는 포인터와 동일하므로 객체를 통해 연산할 수 있습니다. 참조 변수 $p1. 일반적으로
객체 참조를 객체라고 부릅니다.
6. 객체에서 멤버를 사용하는 방법
위에서 본 것처럼 PHP 객체에는 두 가지 유형의 멤버가 있는데, 하나는 멤버 속성이고 다른 하나는 멤버 메서드입니다.
, $p1=new Person();으로 객체를 선언할 수 있습니다. 객체의 멤버는 어떻게 사용하나요? 개체의 구성원에 액세스하려면
특수 연산자 "->"를 사용하여 개체 구성원의 액세스를 완료해야 합니다.
Object-> p2->age; $p3->sex;
Object->say(); $p2->run();
코드 조각
위의 예에서 볼 수 있듯이 object->properties 및 object-> 메서드를 사용하여 개체의 멤버에만 액세스해야 합니다.
두 번째는 없습니다. 개체의 멤버에 액세스하는 방법입니다.
위 내용은 PHP 객체 지향 가이드입니다. (2) 객체 인스턴스화 및 객체 멤버 사용 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!
<?php class Person{ //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say(){ //这个人可以说话的方法 echo "这个人在说话"; } function run(){ //这个人可以走路的方法 echo "这个人在走路"; } } $p1=new Person(); //创建实例对象$p1 $p2=new Person(); //创建实例对象$p2 $p3=new Person(); //创建实例对象$p3 //下面三行是给$p1对象属性赋值 $p1->name=”张三”; $p1->sex=”男”; $p1->age=20; //下面三行是访问$p1对象的属性 echo “p1对象的名字是:”.$p1->name.”<br>”; echo “p1对象的性别是:”.$p1->sex.”<br>”; echo “p1对象的年龄是:”.$p1->age.”<br>”; //下面两行访问$p1对象中的方法 $p1->say(); $p1->run(); //下面三行是给$p2对象属性赋值 $p2->name=”李四”; $p2->sex=”女”; $p2->age=30; //下面三行是访问$p2对象的属性 echo “p2对象的名字是:”.$p2->name.”<br>” echo “p2对象的性别是:”.$p2->sex.”<br>”; echo “p2对象的年龄是:”.$p2->age.”<br>”; //下面两行访问$p2对象中的方法 $p2->say(); $p2->run(); //下面三行是给$p3对象属性赋值 $p3->name=”王五”; $p3->sex=”男”; $p3->age=40; //下面三行是访问$p3对象的属性 echo “p3对象的名字是:”.$p3->name.”<br>”; echo “p3对象的性别是:”.$p3->sex.”<br>”; echo “p3对象的年龄是:”.$p3->age.”<br>”; //下面两行访问$p3对象中的方法 $p3->say(); $p3->run(); ?>