php类和对象之创建一个对象

来源:2-2 PHP类和对象之创建一个对象

qq_薯条配可乐_03787165

2016-11-06 15:17

<?php
//定义一个Car类并实例化一个对象
class Car{
 public $name='car';
 public function getName(){
     return $this->name;
 }
}
$car=new Car();
// $car->name='adfa';
echo $car->getName();
?>

为什么当实例化对象$car->name属性注释掉,返回的结果是car;如果没有注释掉,返回的结果是adfa,不太理解以及this指针在这里的作用

写回答 关注

5回答

  • 为何学开发
    2016-11-06 17:15:36
    已采纳

    name在这里是类的属性,即这个类的对象的公共属性,

    代码为你演示的重点是类的属性和方法之间的调用,即在外部如何通过方法调用属性。

    实际案例中,经常是将将类的属性设置为保护或私有,如果需要用到该属性,只能在类中通过方法获取和赋值,

    而不能在外部通过类名->属性名获取或赋值。

    如代码中的get方法获取,同理赋值也在类内部,防止像$car->name=''的外部随意赋值的情况。

    至于原因呀,太多说不完,安全/规范/资源等等拉。

    你比我强的是,我以前学的时候都不会思考这种情形,只会按部就班来什么学什么。

    qq_薯条配...

    非常感谢!

    2016-11-06 18:46:48

    共 1 条回复 >

  • qq_死猫_0
    2017-04-24 20:56:19

    我的理解,假如你家有各种车。 你老婆说开车送我,这个车没特指(你只知道开车,没特指哪一辆,你脑子里只有“开车”,echo 开车;)。假设你是死脑筋,这车就开不了,因为他没说开哪辆。这个车就类似那个 类 的概念。

    然后你老婆又说,开奥迪,这就是实例化了,你脑子里有了“开奥迪”, echo 开奥迪;。

  • 万埃一尘
    2016-11-27 14:32:39

    just for demonstration!

  • qq_薯条配可乐_03787165
    2016-11-06 15:43:02

    我理解了你说的意思,可是我觉得在实际案例中有必要声明类的name属性吗(public $name='car';)?他要获取的应该是实例化对象的name,为什么此案例中还写了这一句呢?

  • ycc4281576
    2016-11-06 15:30:05

    $this是指这个对象本身,注释掉的时候走的流程:实例化对象-->调用方法getName-->getName获得对象的name属性,也就是car;而没有注释时,实例化对象-->给对象的name属性重新赋值为adfa-->调用方法getName-->getName获得对象的name属性(已经重新赋值为adfa),所以输出为adfa。简单的说,注释掉输出的是初始的name属性,没注释输出的是重新赋值后的name属性。希望说清楚了

    qq_薯条配...

    我理解了你说的意思,可是我觉得在实际案例中有必要声明类的name属性吗(public $name='car';)?他要获取的应该是实例化对象的name,为什么此案例中还写了这一句呢?

    2016-11-06 15:43:26

    共 1 条回复 >

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181734 学习 · 2575 问题

查看课程

相似问题