5. 객체 인스턴스화 방법
위에서 객체지향 프로그램의 단위가 객체라고 했지만 객체는 클래스를 통해 인스턴스화되므로
클래스가 선언됩니다. 객체를 인스턴스화합니다.
클래스를 정의한 후 new 키워드를 사용하여 객체를 생성합니다.
$对象名称= new 类名称(); <?php class Person { //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say() //这个人可以说话的方法 { echo "这个人在说话"; }f unction 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 등)을 저장합니다. 메모리에서 차지하는 공간은 길이가 같고 둘 다 64비트입니다. 4바이트. 그렇다면
데이터가 가변 길이이고 큰 공간을 차지해야 하는 메모리 세그먼트는 무엇입니까? 이러한 데이터는
힙 메모리에 저장됩니다. 스택 메모리에는 직접 액세스할 수 있지만 힙 메모리에는 직접 액세스할 수 없습니다. 우리 객체의 경우
번호는 큰 데이터 유형이고 가변 길이의 공간을 차지하므로 객체는 힙에 배치되지만 객체 이름
은 이렇게 스택에 배치됩니다. 개체 이름을 사용할 수 있습니다.
$p1=new Person();
에 new Person()이 3번 있으므로 힙에 3개의 공간이 열리고 각각 3개의 인스턴스 객체가 생성됩니다. 객체는
서로 독립적입니다. 자신만의 공간을 사용하세요. PHP에서는 new 키워드가 나타나는 한 객체
가 인스턴스화되고 자신만의 공간이 힙에 생성됩니다.
힙의 각 인스턴스 객체는 속성을 저장합니다. 예를 들어 힙의 인스턴스 객체는 이제 이름, 성별
및 나이를 저장합니다. 각 속성에는 주소가 있습니다.
$p1=new Person(); 등호 $p1의 오른쪽은 참조 변수입니다.
할당 연산자를 통해 참조 변수 "$p1"에 할당됩니다. "이므로 $p1 객체의 첫 번째 주소를 저장하는 변수입니다. $p1은 스택 메모리에 배치됩니다. $p1은 힙의 객체를 가리키는
포인터와 동일하므로 참조 변수 $p1을 통해 객체를 참조합니다.
6. 객체에서 멤버를 사용하는 방법
위에서 본 것처럼 PHP 객체에는 두 가지 유형의 멤버가 있는데, 하나는 멤버 속성이고 다른 하나는 멤버 메서드입니다. 이제
객체를 선언할 수 있습니다. $p1=new Person(); 객체의 멤버를 사용하는 방법은 무엇입니까? 개체의 구성원에 액세스하려면 특수 연산자 "->"를 사용하여 개체 구성원의 액세스를 완료해야 합니다.
Object-> Attribute $p1->name-> ;age; $p3->sex;
Object->Method $p1->say(); $p2->run();
다음 예와 같습니다.
위의 예에서 볼 수 있듯이 개체->속성 및 개체->메서드를 사용하여 개체의 멤버에만 액세스해야 합니다.
<?php class Person { //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say() //这个人可以说话的方法 { echo "这个人在说话"; }f unction 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>”; LAMP 大讲堂PHP 面向对象技术(全面讲解) echo “p3对象的年龄是:”.$p3->age.”<br>”; //下面两行访问$p3对象中的方法 $p3->say(); $p3->run(); ?>