如何静态调用方法?

时间:2010-11-09 16:24:06

标签: php oop methods method-chaining

<?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

如何从“热门”类调用函数“解析”?

糟糕英语的好消息

2 个答案:

答案 0 :(得分:2)

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

当您使用new关键字,来自某个类的创建和对象时,如果您尚未使用新的关键字,则$this将无法使用static 对象

要使代码正常工作,要保持静态,您必须使用Scope Resolution Operator (::) keyowrd和static,因为您的方法位于父类中且不受限制,请使用{{1} }关键字来调用父静态方法。

示例:

class Popular
{
    public static function getVideo()
    {
        return static::parsing(); //Here
    }
}

答案 1 :(得分:1)

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