如何解决PHP:这些行中有多少行不起作用,是静态访问还是非静态访问
|| http://codepad.viper-7.com/ezvlkQ 因此,我试图找出:
...?PHP
$object = new A();
class A
{
static public $foo = \'bar\';
function displayFoo()
{
echo $this->$foo;
}
}
A::displayFoo();
A->displayFoo();
?>
与此相关,您可以找到多少个错误?您能告诉我它们的真实含义吗?我无法真正从键盘使用的验证器中解释什么是什么以及什么不正确...
解决方法
我已经在这里更新了您的代码http://codepad.viper-7.com/UaUE4g
错误1:
echo $this->$foo;
内容应为:
echo self::$foo;
..因为它是静态的。
错误2:
A::displayFoo();
该方法是实例方法::
,用于访问静态方法。
错误3:
A->displayFoo();
这是一个错误,因为未定义A
,如果是,则应读取$A
。可以的:
$object->displayFoo();
..作为$ object是A类的实例。
下一步,请参考静态主题手册。
, 不知道从哪里开始。静态方法属于该类,普通方法属于该类的实例的对象。例如,您可以拥有:
Class A {
static public $foo = \'WOOHOOO\';
static function displayFoo() {
echo self::$foo;
}
}
echo A::displayFoo();
之所以有效,是因为您正在调用属于类A
的displayFoo
方法。或者您可以这样做:
Class A {
public $foo = \"WOOHOO\";
public function displayFoo() {
echo $this->foo;
}
}
$obj = new A();
$obj->displayFoo();
现在,您将基于A
类创建一个对象。该对象可以调用其方法。但是该对象没有静态方法。如果要声明该函数为静态,,14ѭ将无法使用它。
您不能:
A->displayFoo()
在任何情况下都不会。 ->
运算符假定一个对象,A
不能是对象,因为它不是变量。
, 您可以在手册中阅读静态类成员:
http://php.net/static
请密切注意这些示例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。