PHP 公共(public)函数的行为类似于静态

标签 php function oop static

当我遇到一段奇怪的代码时,我正在阅读一本关于 PHP 的书:

 class Employee {
        public function show() {
            echo "show launched\n";
        }
    }

    Employee::show();

我来自 C++,所以我敢打赌这段代码行不通。这就是我测试它的原因。

它成功了,显示“show launched”(天哪,我喝醉了吗?)!

这似乎打破了类的方法可以在不实例化类的情况下被调用的概念。

  • 那么类中的静态标识符有什么意义呢?
  • 所有公共(public)函数也是静态的吗?真的,我错过了什么?

提前致谢。


添加: 只是一个通知。

我发现在这个book . 第 178-179 页,它是作为正确示例给出的(如果我是对的)

最佳答案

是的,这会起作用,但有一个警告。您可能关闭了 error reporting顺便说一句,在 PHP 上...

Strict standards: Non-static method Employee::show() should not be called statically

在函数定义之前添加一个 static 关键字会使警告消失。

下面的代码在没有警告的情况下工作..

<?php
class Employee {
    public static function show() { //<----- Added the static keyword.
        echo "show launched\n";
    }
}

Employee::show();

回答你的问题...

It seems to be breaking the concept that method of class can be called without instantiation of class.

是的,这是正确的,这就是为什么您会收到我之前向您展示的非常明确的警告。你知道警告的作用是什么吗? ;).不该做的事。

来自 PHP 文档..

Calling non-static methods statically generates an E_STRICT level warning.

Source

关于PHP 公共(public)函数的行为类似于静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22246640/

相关文章:

java - 一旦部署以通过触发器打开/关闭代码,构建代码的最佳方式是什么?

matlab - 输入矩阵到ode45的函数文件

php - MAMP-Mac OS X

php - 制作抽象pdo类

php - PubNub 服务器未正确格式化消息

javascript - 单击按钮更改html文本

php - php中$this::和$this->的区别

java - 如何从包中的类访问src中的类

javascript - 子类化 native 对象

php - 尝试让 While 处于 while 循环中工作