不在对象上下文中时使用$ this Yii2

时间:2017-06-21 10:34:35

标签: php yii yii2 yii-components

我有错误:

  

不在对象上下文中时使用$ this。

我使用的是:meysampg/intldate

<?php
namespace app\components;
use meysampg\intldate\IntlDateTrait;

    class General extends Component
    {
        use IntlDateTrait;
    public static function jalaliToGregorian($date,$pattern='yyyy/MM/dd')
        {
            echo $date;
            $dateToGre = explode('/',$date);

            echo $this->fromPersian([$dateToGre[0],$dateToGre[1],$dateToGre[2]])->toGregorian('en')->asDateTime($pattern);
        }
    }

1 个答案:

答案 0 :(得分:3)

static关键字表示该方法或变量不是对象的一部分,而是该类的一部分。

这意味着$this无法访问。

试试这个:

class General extends Component
{
    use IntlDateTrait;
    public static function jalaliToGregorian($date,$pattern='yyyy/MM/dd')
    {
        echo $date;
        $dateToGre = explode('/',$date);
        $general = new General();
        echo $general->fromPersian([$dateToGre[0],$dateToGre[1],$dateToGre[2]])->toGregorian('en')->asDateTime($pattern);
    }
}

在类中引用静态属性或方法时,您需要使用ClassName::Method()self::method()

如果你想从类中调用非静态方法/属性,你需要实例化它。