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

WBOY
發布: 2016-06-06 20:17:36
原創
1295 人瀏覽過

是不是因为没加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,那么就访问了该类的属性。

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板