为什么在 PHP 中静态调用非静态方法会导致错误?

Susan Sarandon
发布: 2024-11-24 11:42:11
原创
829 人浏览过

Why Does Calling a Non-Static Method Statically in PHP Result in an Error?

理解静态方法调用静态方法错误

在 PHP 中,提供的代码片段遇到错误消息:

Strict standards: Non-static method
Page::getInstanceByName() should not
be called statically in
/var/www/webworks/index.php on line 12
登录后复制

静态调用Page类中的非静态方法时会出现此错误,这不是

修复

要解决此问题,需要将 Page 类中的 getInstanceByName() 方法声明为静态方法。将行:

function getInstanceByName($name='')
登录后复制

修改为:

public static function getInstanceByName($name='')
登录后复制

通过将方法声明为静态,您可以使用类名调用它,例如:

$r = Page::getInstanceByName($page);
登录后复制

额外注意事项

  • 静态方法和可测试性:静态方法不能被模拟或存根,这使得测试依赖于它们的代码变得困难。请考虑使用依赖注入,即通过对象的构造函数或方法将数据传递到对象中。
  • 构造函数复杂性: Page 类中的构造函数做了太多工作,例如查询数据库。构造函数只能用于初始化对象的状态,而不是执行复杂的操作。

以上是为什么在 PHP 中静态调用非静态方法会导致错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板