Statische Eigenschaften können in nicht statischen Methoden aufgerufen werden
God_Like
God_Like 2019-04-14 19:20:19
0
3
2217

Wie bei 3:30 in dieser Lektion erwähnt, können statische Eigenschaften nicht in nicht-statischen Methoden aufgerufen werden.

Aber laut persönlichen Tests können nicht-statische Methoden in dieser Klasse statische Eigenschaften aufrufen : :Attributname】Nur

God_Like
God_Like

Antworte allen(2)
God_Like

首先非常感谢老师的回复

一、您给的示例代码里面  类没有定义 test() 这个方法 所以实例化会运行错误

echo (new Demo)->test();    // "Error" 

二、我一直在用的是php7.2的版本练习东西

您给的代码中我把(new Demo)->test() 修改成(new Demo)->test2()运行

两个输出结果都是peter

是不是证明

类的【普通方法】 既可以调用【类的静态属性】又可以调用类的【静态方法】

Peter-Zhu

首先, 感谢你的认真学习态度, 你说得对, 这个地方, 教程中有不严谨的地方...

实际上, 普通方法中,直接调用静态属性,并不会报错, 但是绝对不能调用静态方法, 

在普通方法中, 官方也是不推荐使用静态成员的, 这里允许使用静态属性, 是一个历史遗留的bug, 或许在以后的版本中会修正...

下面是测试代码,供您参考:

class Demo
{
    // 静态属性
    public static $name = 'peter';
    
    // 静态方法
    public static function hello()
    {
       return self::$name;
    }
    
    //  普通方法1
    public function test1()
    {
        return self::$name;
    }
    
    //  普通方法1
    public function test2()
    {
        return self::hello();
    }
}

echo (new Demo)->test1();    // "peter"
echo '<hr>';
echo (new Demo)->test();    // "Error"


Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage