对象成员的访问

2025-10-23 18:34:09

1、对象中包含成员属性和成员方法,访问对象中的成员包括成员属性的访问和成员方法的访问。对成员属性的访问则又包括赋值操作和获取成员属性值得操作。访问对象中的成员和访问数组中的元素类似。只能通过对象的引用来访问对象中的每个成员。但这要使用一个特殊的运算符号”->”来完成对象成员的访问,访问对象中成员的语法格式:

$引用名 = new 类名称([参数数列表]) ;   //对象实例化

$引用名 ->成员属性 = 值  //对成员属性赋值的操作

Echo $引用名->成员属性;  //获取成员属性的值

$引用名->成员方法  //访问对象中的成员方法

在下面的实例中,声明一个Person类,其中包括三个成员属性和两个成员方法,并通过Person类实例化出三个对象,而且使用运算符号”->”分别访问三个对象中的每个成员属性和成员方法。

<?php

        Class Person{

              Var $name;               //第一个成员属性$name定义人的名字

        Var $sex;                 //第二个成员属性$sex定义人的性别

         Var $age;                //第三个成员属性$age定义人的年龄

 //声明人的两个成员方法

Function say(){

       Echo “这个人在说话<br>”;    //在说话的方法体中可以有更多内容

}

Function run(){

       Echo “这个人在走路”;          //在走路的方法体可以有更多内容

}

}

//下面三行通过new关键字实例化person类的三个实例对象

$person1 = new Person();  //通过类Person创建第一个实例对象$person1

$person2 = new Person();  //通过类Person创建第一个实例对象$person2

$person3 = new Person();  //通过类Person创建第一个实例对象$person3

//下面三行是给$person1对象中属性初始化赋值

$person1->name=”张三”;    //将对象$person1的$name属性赋值为张三

$person1->sex=”男”;    //将对象$person1的$sex属性赋值为男

$person1->age=”20”;    //将对象$person1的$age属性赋值为20

//下面三行是给$person2对象中属性初始化赋值

$person2->name=”李四”;    //将对象$person2的$name属性赋值为李四

$person2->sex=”女”;    //将对象$person2的$sex属性赋值为女

$person2->age=”30”;    //将对象$person2的$age属性赋值为30

 

//下面三行是给$perso3对象中属性初始化赋值

$person3->name=”王五”;    //将对象$person3的$name属性赋值为王五

$person3->sex=”男”;    //将对象$person3的$sex属性赋值为男

$person3->age=”40”;    //将对象$person3的$age属性赋值为40

 

//下面三行是访问$person1对象中的成员属性

Echo “person1对象的名字是:”.$person1->name.”<br>”;

Echo “person1对象的性别是:”.$person1->sex.”<br>”;

Echo “person1对象的年龄是:”.$person1->age.”<br>”;

//下面两行访问$person1对象中的方法

$person1->say();

$person1->run();

//下面三行访问$person2对象中的成员属性

Echo “person2对象的名字是:”.$person2->name.”<br>”;

Echo “person2对象的性别是:”.$person2->sex.”<br>”;

Echo “person2对象的年龄是:”.$person2->age.”<br>”;

//下面两行访问$person2对象中的方法

$person2->say();

$person2->run();

//下面三行访问$person3对象中的成员属性

Echo “person3对象的名字是:”.$person3->name.”<br>”;

Echo “person3对象的性别是:”.$person3->sex.”<br>”;

Echo “person3对象的年龄是:”.$person3->age.”<br>”;

//下面两行访问$person3对象中的方法

$person3->say();

$person3->run();

从上例中可以看到,只要是对象中的成员,都要使用”对象引用名->属性”或”对象引用名->方法”形式访问,如果兑现中的成员不是静态的,那么这是唯一的访问形式。

2、特殊的对象引用”$this”

访问对象中的成员必须通过对象的引用来完成。如果在对象的内部,对象的成员方法中访问自己对象中的成员属性,或者访问自己对象内其他成员方法时怎么处理?那就是在兑现的外部还是在对象的内部,访问对象中的成员都必须使用对象的引用变量。但对象创建完成以后,对象的引用名称无法在对象的方法中找到。如果在对象的方法中再使用new关键字创建一个对象则是另一个对象,调用的成员也是两一个新创建对象的成员。

 对象一旦被创建,在对象中的每个成员方法里面都会攒在一个特殊的对象引用”$this”.成员方法属于哪个对象,$this引用就代表哪个对象,专门用来完成对象内部成员之间的访问。This的本意就是”这个”的意思,就像每个人都可以使用第一人称代词”我”代表自己一样。例如,别人想访问你的年龄,就必须使用“张三的年龄”的形式,相当于在对象外部使用引用名”张三”访问他内部的成员属性”年龄”.如果自己想说出自己的年龄,则使用”我的年龄”,相当于在对象的内部使用引用名称”我”访问自己内部的成员。

类Person中声明了两个方法say()和run(),通过类person实例化的三个实例对象$person1、$person2、$person3中都会存在say()和run()这两个成员方法,则每个对象中的这两个成员方法各自存在一个$this引用。在对象$person1的两个成员方法中的$this引用代表$person1、在对象$person2的两个成员方法中的$this引用代表$person2、在对象$person3的两个成员方法中的$this引用代表$person3

修改一下上面实例,在声明类Person时,成员方法say()中使用$this引用访问自己对象内部的所有成员属性。然后调用每个对象中的say()方法,让每个人都能说出自己的名字、性别和年龄

<?php

        Class Person{

              Var $name;               //第一个成员属性$name定义人的名字

        Var $sex;                 //第二个成员属性$sex定义人的性别

         Var $age;                //第三个成员属性$age定义人的年龄

 //声明人的两个成员方法

Function say(){

       //在类中声明说话的方法,使用$this访问自己对象内部的成员属性

     Echo “我的名字:”.$this->name.”,性别:”.$this->sex.”,年龄:”.$this->age.”.<br>”  

}

Function run(){

       Echo $this->name.”在走路<br>”;  //使用$this访问$name属性

}

}

//下面三行通过new关键字实例化person类的三个实例对象

$person1 = new Person();  //通过类Person创建第一个实例对象$person1

$person2 = new Person();  //通过类Person创建第一个实例对象$person2

$person3 = new Person();  //通过类Person创建第一个实例对象$person3

//下面三行是给$person1对象中属性初始化赋值

$person1->name=”张三”;    //将对象$person1的$name属性赋值为张三

$person1->sex=”男”;    //将对象$person1的$sex属性赋值为男

$person1->age=”20”;    //将对象$person1的$age属性赋值为20

//下面三行是给$person2对象中属性初始化赋值

$person2->name=”李四”;    //将对象$person2的$name属性赋值为李四

$person2->sex=”女”;    //将对象$person2的$sex属性赋值为女

$person2->age=”30”;    //将对象$person2的$age属性赋值为30

 

//下面三行是给$perso3对象中属性初始化赋值

$person3->name=”王五”;    //将对象$person3的$name属性赋值为王五

$person3->sex=”男”;    //将对象$person3的$sex属性赋值为男

$person3->age=”40”;    //将对象$person3的$age属性赋值为40

 

$person1->say();     //使用$person1访问它中的say()方法,方法say()中的$this就代表这个对象$person1

$person2->say();     //使用$person2访问它中的say()方法,方法say()中的$this就代表这个对象$person2

$person3->say();     //使用$person3访问它中的say()方法,方法say()中的$this就代表这个对象$person3

 

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢