php - 面向对象的问题:为什么提示未定义呢?
怪我咯
怪我咯 2017-04-10 16:51:04
[PHP讨论组]

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

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


?>
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
迷茫

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号