首页 > 面向对象的问题:为什么提示未定义呢?

面向对象的问题:为什么提示未定义呢?

是不是因为没加this啊 我看别人说如果不加this则理解为方法内部的一个局部变量 这句话该怎么理解啊 是不是就不会报错了?那么为什么还会报错?我是新手 感觉面向对象很难

<?php
 class man{
   public $name=111;
   public function who(){
      echo $name;
   }
 }
$a=new man();
$a->who();


?>

没加 this 可以识别为类变量那是 Java 的规则。在 php 中使用类变量必须前缀 this 。


1、who 方法里面的 $name 确实是一个未定义的变量,你可以用isset($name)来判断该变量的值是否设置。
2、who 方法里面的 $name不加$this, 但$name 必须初始化!!!如 $name = 'zhangsan';echo $name;那么$name就是 who方法里面的局部变量

3、who方法里面加了$this,即 echo $this->name,那么就访问了该类的属性。

【热门文章】
【热门文章】