一个类的静态函数

时间:2016-08-20 12:22:59

标签: php oop

我这里有代码,

class someClass {
    public $someMember;

    public function __construct() {
        $this->someMember = 1;
    }

    public static function getsomethingstatic() {
        return $this->someMember * 5;
    }
}

$obj = new someClass();
echo $obj::getsomethingstatic();

并返回错误,我知道它与静电有关,但我找不到好的解释。我知道如何解决这个问题,我只是在寻找一个可以增加我理解的解释。

任何?

2 个答案:

答案 0 :(得分:2)

静态函数($obj::)无法返回/使用非静态($this)类属性,您必须使getsomethingstatic非静态函数才能返回变量或使变量静态并分别更新其他函数。

由于$this指的是有问题的实例,并且按照定义使用静态函数在实例之外使用,因此无法混合。

<强>普罗蒂普

将来请在OP中包含错误。很容易发现这个问题中的错误,但它可能不会出现在另一个案例中,所以包括所需的信息可以加快这个过程。

答案 1 :(得分:1)

您不在静态方法中使用对象访问器->。请改用范围解析运算符::;在其前面添加selfstatic,如下所示。但是一定要在Static方法中只使用静态成员变量/属性......

        class someClass {
            public static $someMember;

            public function __construct() {
                self::$someMember = 1;
                // OR 
                static::$someMember = 1;
            }

            public static function getsomethingstatic() {
                return self::$someMember * 5;
                // OR 
                return static::$someMember * 5;
            }
        }


        // TO CALL A STATIC METHOD OF A CLASS, 
        // YOU NEED NOT INSTANTIATE THE CLASS...
        // SIMPLY CALL THE METHOD DIRECTLY ON THE CLASS ITSELF....
        echo someClass::getsomethingstatic();