首页 > 后端开发 > php教程 > 关于PHP静态方法调用和实例化类调用的区别

关于PHP静态方法调用和实例化类调用的区别

不言
发布: 2023-03-23 10:00:01
原创
2764 人浏览过

本篇文章的内容介绍的是关于PHP静态方法调用和实例化类调用的区别 ,现在分享给大家,有需要的朋友可以参考一下

1.首先来澄清一些观点

  由于静态方法在内存中只有一份,无论你调用多少次,都是共用的,而且没有对象的概念,所以不能在静态方法里面使用$this调用,如果非得调用的话,只能实例化自身类

  而实例化不一样,每一个实例化是一个对象,在内存中是多个的


复制代码

<?phpError_reporting(E_ALL|E_STRICT);class A{    
    public function bar(){        echo &#39;bar&#39;.PHP_EOL;
    }    public static function foo(){        echo &#39;foo&#39;.PHP_EOL;
    }
}

A::bar();//会报错
A::foo();//正确
$obj = new A();
$obj -> foo();//正确
登录后复制
/* 
  bar()是一个非静态方法,应该由对象来调用,但用静态来调用此方法也可以执行,而严格状态下,此方法会执行,同时报错, 
  Strict Standards: Non-static method Human::easyeat() should not be called statically in........
  但是实例化的类是可以调用静态方法的。
*/
登录后复制

复制代码


复制代码

<?phpclass A{    public $name = &#39;zongshuai&#39;;    public function bar(){        echo &#39;bar&#39;.PHP_EOL;
    }    public static function foo(){        echo self::$name.PHP_EOL;//报错
    }
}

A::foo();/*
    静态方法不能调用非静态属性 。不能使用self::调用非静态属性。*/
登录后复制

复制代码

总结: 
类》访问->静态方法(类的方法)->可以 
类》访问->普通方法(对象的方法)->不可以(虽然方法里不用$this关键字时,可以!但不支持这种写法)
对象》访问》静态方法(类的方法)->可以 
对象》访问》普通方法(对象的方法)->可以
相关推荐:
登录后复制
<a href="http://www.php.cn/php-weizijiaocheng-391759.html" target="_self">PHP调用京东联盟开普勒、宙斯API模板</a><br/><br/>             
登录后复制

以上是关于PHP静态方法调用和实例化类调用的区别 的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
怎么学好php
来自于 1970-01-01 08:00:00
0
0
0
PHP扩展intl
来自于 1970-01-01 08:00:00
0
0
0
php数据获取?
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板