PHP中的静态和非静态调用

Mp *_*ega 14 php oop

好的,我有这个代码,我正在学习

 class scope{

    function printme(){
        return "hello";
    }

    public static function printme(){
        return "hello"; 
    }

 }

$s = new scope();
echo $s->printme(); //non-static call
echo "<br>";
echo scope::printme(); //static call
Run Code Online (Sandbox Code Playgroud)

现在,这不是我项目的代码,但这些是我想要做的事情

  1. 我想创建一个包含静态和非静态函数的类.
  2. 我希望在静态和非静态调用中都可以使用函数.

由于非静态函数对它有很多操作,我还需要将其称为静态函数,这样我就不需要实例化该类.这可能吗?或者我真的需要将函数重写为另一个函数或类?

注意:告诉我,我是否已经做了一些糟糕的编程.

xda*_*azz 35

这是规则:

静态方法可以用于静态方法和非静态方法.

非静态方法只能用于非静态方法.


wal*_*rii 6

如果很少需要类的实例,则可以使用静态方法创建实例,调用非静态方法并返回值.

class Scope {
    public function mynonstatic() {
    }

    public static function mystatic() {
        $s = new Scope();
        return $s->mynonstatic();
    }
}
Run Code Online (Sandbox Code Playgroud)

请记住,静态方法实际上只是一个范围缩小的全局函数.它们很有用,但不应该在没有充分理由的情况下创建它们.