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的值这个要怎么做到呢? 展开
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的值这个要怎么做到呢? 展开
展开全部
你没有理解静态变量和实例变量的区别。
有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();
?>
有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();
?>
展开全部
静态函数的引用必须用self::$a1;
如果是在类外面用就:echo(Abc::$a1);
如果是在类外面用就:echo(Abc::$a1);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
静态函数是这个类的函数,而不是属于单个对象实例的函数。既然不是实例,那个$this指向谁? 所以说经态函数里是不能用$this的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询