>  기사  >  백엔드 개발  >  PHP 객체지향 튜토리얼 3

PHP 객체지향 튜토리얼 3

黄舟
黄舟원래의
2016-12-29 10:52:581026검색

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();
위 그림에서 알 수 있듯이 $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();
?>
위 내용은 PHP 객체지향 튜토리얼 3의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!



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