PHP定义类中不能有$this?

<?phpclassAbc{publicstatic$a1="ima1!<br/>";publicstaticfunctiongo(){echo($this->a1);}... <?php
class Abc{
public static $a1 = "im a1!<br/>";
public static function go()
{
echo($this->a1);

}
}

Abc::go();
?>

这段代码运行时提示
Fatal error: Using $this when not in object context in F:\Lab\PHPnow\htdocs\1.php on line 6

貌似是说定义类时不能包含$this?

可是我看很多其他的源代码在类的定义中都有$this的啊。。
问下是怎么回事
看了一楼的答案

可是令我不解的是在有些源码里确确实实看到了有的CLASS定义的函数中出现了$this,不知道是为什么。。

还有。如果用了self::$a1的话
那么下面的代码:

$a = new Abc;
$a->a1 = "gogogo";
$a->go();

输出的结果仍然是im a1
我想要go这个函数的作用就是输出Abc的对象中变量a1的值这个要怎么做到呢?
展开
 我来答
everalan
2009-04-28 · TA获得超过1820个赞
知道大有可为答主
回答量:799
采纳率:0%
帮助的人:1418万
展开全部
你没有理解静态变量和实例变量的区别。
有static修饰的变量和函数不能出现$this
你看到的函数一定没有static

建议你系统的学习一下PHP,这样瞎猜是很浪费时间的

static $a1和self::$a1或者$a::$a1是一起使用的。
var $a1和$this->a1是一起使用的

class Abc{
static $a1;
}
class Abc{
var $a1;
}
两个$a1是不同的。
第一个用self::$a1或者$a::$a1引用,
第二个用$this->$a1或者$a->a1引用

首先static的函数里不能出现$this,只能是self

class Abc{
public static $a1 = "im a1!<br/>";
public static function go()
{
echo(self::$a1);

}
}

Abc::go();
?>
lshfong
2009-04-28 · 超过12用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:28.3万
展开全部
静态函数的引用必须用self::$a1;
如果是在类外面用就:echo(Abc::$a1);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sanwkj
2009-04-28 · TA获得超过126个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:117万
展开全部
静态函数是这个类的函数,而不是属于单个对象实例的函数。既然不是实例,那个$this指向谁? 所以说经态函数里是不能用$this的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式