gpt4 book ai didi

php - PHP 中的方法调用

转载 作者:行者123 更新时间:2023-12-04 23:18:55 25 4
gpt4 key购买 nike

我在其中有 TestClass 和一个公共(public)方法。我可以像静态方法一样使用::运算符并使用对象来调用相同的方法。如果我们能够在不创建同一类的对象的情况下调用公共(public)函数,那么在 PHP 中静态函数有什么优势或用途?

<?php

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

TestClass::testMethod();

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

?>

最佳答案

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

但是,static 函数的要点是说某些函数不需要类的实例即可执行。即使函数未标记为静态,也可以静态调用函数,但这样做在技术上是不正确的。如果您设置了 error_reporting(E_ALL),它会给您一个严格的标准错误。

这不是因为代码不会工作,而是因为它可能不会。

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

您可以静态调用第一个函数,它会正常工作。但是,如果您静态调用 doSomethingElse,它将不起作用,因为它会尝试访问 $this,这只有在您有一个对象时才有可能。

因此我们将 static 关键字应用于 doSomething 以让 (a) PHP 和 (b) 使用该类的程序员知道可以静态调用它。这是一个 promise ,它会起作用。

假设应该是,如果它未标记为 static,则不应静态调用它。

PHP 严格的标准错误旨在使您的代码更好,即使它已经可以运行。 the E_STRICT constant 的文档说:

Enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code.

关于php - PHP 中的方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19857105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com