Heim > Artikel > Backend-Entwicklung > 面向对象的问题:为什么提示未定义呢?
是不是因为没加this啊 我看别人说如果不加this则理解为方法内部的一个局部变量 这句话该怎么理解啊 是不是就不会报错了?那么为什么还会报错?我是新手 感觉面向对象很难
<code><?php class man{ public $name=111; public function who(){ echo $name; } } $a=new man(); $a->who(); ?></code>
是不是因为没加this啊 我看别人说如果不加this则理解为方法内部的一个局部变量 这句话该怎么理解啊 是不是就不会报错了?那么为什么还会报错?我是新手 感觉面向对象很难
<code><?php class man{ public $name=111; public function who(){ echo $name; } } $a=new man(); $a->who(); ?></code>
没加 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,那么就访问了该类的属性。