php - 为什么公共(public)函数可以通过静态调用来访问 - PHP?

标签 php oop

请查看以下代码。虽然我没有将测试方法定义为静态它可以通过 A::test() 访问。怎么可能呢?这是 PHP 中的错误吗?

class A {       
        public function test(){         
            echo __CLASS__;
        }
}
A::test(); //Print 'A'

如果我尝试访问 test() 方法中的任何公共(public)成员,则会出现错误。见下文。

class A {   
        public $name = 'jimit';
        public static function test(){          
                        echo $this->name;
            echo __CLASS__;
        }
    }
A::test(); //Error

请帮我澄清一下事情。

谢谢, 吉米特

最佳答案

这不是一个错误,而是 PHP4 对象模型实现的遗留问题。在当前版本中,静态调用非静态方法将引发 E_STRICT 级别警告。

至于第二个,很明显,没有您的类的实例,因此没有 $this 可供引用。

关于php - 为什么公共(public)函数可以通过静态调用来访问 - PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18400931/

相关文章:

php - 查询始终返回特定行

php - Laravel 4 中的包 Controller

python - 使用 Python 描述符 : How best to write a general validation getter-setter

php - 我可以在另一个类中实例化一个 PHP 类吗?

php - 删除多行字符串变量中每行开头的空格

PHP 消息传递系统不会显示第一条消息

php - 使用 XAMPP 和 php 5.3 ext 在 Mac 上安装 Mongodb

python - 如何在 Matlab 中创建多态数组

oop - 在 OOP 中,运算符重载实际上是多态性还是参数重载?

javascript - 我怎样才能有效地原型(prototype)数组或从数组重用代码?