Как вызвать метод статически? - PullRequest
0 голосов
/ 09 ноября 2010
<?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 <<

Но: Фатальная ошибка: использование $ this, когда он не находится в контексте объекта в myFile.php в строке 6

Как вызвать функцию "синтаксический анализ" из класса "Popular"?

Soooooooory для плохого английского

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Используя статический метод, вы не можете использовать ключевое слово $this, поскольку оно может использоваться только внутри объектов, а не в классах.

Когда вы используете ключевое слово * 1004, ваше создание и объект из класса, если вы не использовали новое ключевое слово, то $this не будет доступен, поскольку он не является объектом

, чтобы ваш код работал, будучи статичным, выпришлось бы использовать static keyowrd вместе с Scope Resolution Operator (::), так как ваш метод находится в родительском классе, и он не ограничен, используйте ключевое слово static для вызова родительского статического метода.

Пример:

class Popular
{
    public static function getVideo()
    {
        return static::parsing(); //Here
    }
}
1 голос
/ 09 ноября 2010

изменить return $this->parsing(); на return self::parsing();

...