• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > PHP中静态方法可以访问非静态方法吗

PHP中静态方法可以访问非静态方法吗

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了PHP静态方法,PHP访问非静态方法等相关知识,希望对您有所帮助

PHP中静态方法可以访问非静态方法,通过实例化对象,就可以调用对象中的非静态方法;静态方法虽然可以调用非静态方法,但是不能够调用构造方法。


PHP中静态方法可以访问非静态方法吗


php中静态方法可以访问非静态方法吗

如果我们调用了非静态方法会怎么样呢?首先做测试。

<?phpclass test{    function test() {        echo 'it works';    }}test::test();?>

执行以下,返回错误如下:

Fatal error: Non-static method test::test() cannot be called statically in /home/×××/test.phpon line 7 Call Stack: 0.0002 332548 1. {main}() /home/×××/test.php:0

这个时候,可能大家就会认为静态调用非静态方法是行不通的了,但其实,结论下的过早了,因为test()这个方法比较特殊,与类同名,是构造方法。 我们继续测试。

<?phpclass test {    function test() {        echo 'it works';    }    function test2() {        echo 'it works too';    }}test::test2();?>

执行结果:

it works too

这说明,静态调用非静态方法是可行的,但是静态调用构造方法是不可以的。为了验证这个结论,我又做了如下测试:

<?phpclass test{    static function test() {        echo 'it works';    }}test::test();?>

执行的结果如下:

Fatal error: Constructor test::test() cannot be static in /home/xxx/test.php on line 9

构造方法不能声明静态,所以上面的推论正确。

但这个结果的确是很特殊的,因为可能只有PHP可以静态调用非静态方法,我用Java做了实验,如果静态调用非静态方法会报如下错误:

Cannot make a static reference to the non-static method showString() from the type HelloWorldApp

其他语言我没有一一尝试,但这已经足够来说明PHP的特殊之处,关于为什么PHP会有这样的情况我暂时没有找到相关说明。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • PHP中静态方法可以访问非静态方法吗

相关文章

  • 2022-04-29Photoshop绘制十二生肖按钮图标教程
  • 2022-04-29解决uni-app入坑集合的一种方案
  • 2022-04-29java中定义数组的格式有哪几种
  • 2022-04-29Illustrator设计个性时尚风格的名片教程
  • 2022-04-29一起来了解下Bootstrap中的tab选项卡
  • 2022-04-29如何解决php md5生成16位出现乱码问题
  • 2022-04-29AI教程巧形状生成器制作设计立体渐变数字字体设计教程
  • 2022-04-29Javascript如何阻止事件冒泡和事件本身发生
  • 2022-04-29Photoshop制作超酷的岩石立体字教程
  • 2022-04-29Centos7下宝塔面板PHP7.3怎么安装sqlsrv扩展

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 如何用PHP获取referer判断来路防止非法访问
    • TP6+vue-element-admin实现后台登录验证码
    • uniapp中怎么实现直播旁路推流(步骤分享)
    • 帝国CMS二次开发领号发号功能开发思路
    • Photoshop设计大气的淘宝年终促销海报
    • 制作幸运星插画图
    • 千万不要让搜素引擎误认为买卖链接了
    • vue实现一个获取按键展示快捷键效果的Input组件
    • 纯CSS使图片有放大效果代码
    • 一个设计师的PS经验技巧及设计心得

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有