关于php:如何静态调用方法?

How to invoke a method statically?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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();

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

1
Video::block();

不初始化它

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

不是这个!

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

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

如何从"热门"类中调用函数"解析"?

糟糕的英语很好用


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

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

如果代码是静态的,那么您必须使用statickeyowrd和Scope Resolution Operator (::),因为您的方法在父类中并且不受限制,所以使用static关键字调用父静态方法。

例子:

1
2
3
4
5
6
7
class Popular
{
    public static function getVideo()
    {
        return static::parsing(); //Here
    }
}
  • 在PHP中,$这意味着什么?
  • Paamayim Nekudotayim-范围分辨率
  • http://php.net/manual/en/language.oop5.static.php

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