PHP中的方法调用

Rak*_*h K 2 php

我有TestClass和一个公共方法.我可以使用:: operator之类的静态方法和使用对象来调用相同的方法.如果我们能够在不创建同一类的对象的情况下调用公共函数,那么PHP中的静态函数有什么优点或用途?

<?php

class TestClass { 
    public function testMethod() { 
      echo 'Method called';
    }
}

TestClass::testMethod();

$classObj = new TestClass(); 
$classObj->testMethod();

?>
Run Code Online (Sandbox Code Playgroud)

lon*_*day 6

在这种情况下,没有区别.

但是,static功能的意思是说某些函数不需要类的实例才能执行.即使它们没有标记为静态,也可以静态调用函数,但这样做在技术上是不正确的.如果你已经error_reporting(E_ALL)设置,它会给你一个严格的标准错误.

这并不是因为代码将无法正常工作,而是因为它可能不是.

class TestClass {
    private $name = 'Rakesh';
    public function doSomething() {
        echo "Hi there";
    }
    public function doSomethingElse() {
        echo "Hi there " . $this->name;
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以静态调用第一个函数,它可以正常工作.但是如果你doSomethingElse静态调用,它将无法工作,因为它试图访问$this,这只有在你有一个对象时才有可能.

因此我们将static关键字to doSomething应用于(a)PHP和(b)使用该类的程序员知道可以静态调用它.这是一个可行的承诺.

假设应该是,如果没有标记为static,则不应静态调用它.

PHP的严格标准错误旨在使您的代码更好,即使它已经有效.对于文档E_STRICT常数说:

允许PHP建议对代码进行更改,以确保代码的最佳互操作性和向前兼容性.