0
<?php
class Popular
{
    public static function getVideo()
    {
        return $this->parsing();
    }
}

class Video 
    extends Popular
{
    public static function parsing()
    {
        return 'trololo';
    }

    public static function block()
    {
        return parent::getVideo();
    }
}

echo Video::block();

我绝对应该这样称呼班级:

Video::block();

并且不初始化它

$video = new Video();
echo $video->block()

不是这个!

Video::block(); // Only this way <<

但是:致命错误:在第 6 行的 myFile.php 中不在对象上下文中时使用 $this

如何从“流行”类中调用函数“解析”?

糟糕的英语太棒了

4

2 回答 2

2

当您使用静态方法时,您不能使用$this关键字,因为它只能在对象中使用,而不是在类中使用。

当您使用new关键字时,您从一个类中创建和对象,如果您没有使用新关键字,那么$this将不可用,因为它不是对象

为了使您的代码正常工作,您必须使用statickeyowrd 以及Scope Resolution Operator (::)因为您的方法在父类中并且它没有界限,所以使用static关键字来调用父静态方法。

例子:

class Popular
{
    public static function getVideo()
    {
        return static::parsing(); //Here
    }
}
于 2010-11-09T16:30:59.690 回答
1

更改return $this->parsing();return self::parsing();

于 2010-11-09T16:26:23.217 回答