详谈php静态方法及普通方法的区别


Posted in PHP onOctober 04, 2016

如下所示:

<?php 
header('content-type:text/html;charset=utf-8'); 
/* 
普通方法,存放类内,只有一份

静态方法,也是存放于类内,只有一份

区别在于:普通方法需要对象去调用,需要绑定$this 
即,普通方法,必须要有对象,然后让对象来调用 

而静态方法,不属于哪一个对象,因此不需要绑定$this 
即,不需要对象也可以调用 
*/

class Human{ 
  static public $head=1; 
  public function easyeat(){ 
    echo '普通方法吃饭<br />'; 
  } 
  static public function eat(){ 
    echo '静态方法吃饭<br />'; 
  } 
  public function intro(){ 
    echo $this->name; 
  } 
} 
Error_reporting(E_ALL|E_STRICT); 
//此时没有对象!方法可以执行 
Human::eat(); 
/* 
以下方法easyeat是一个非静态方法,就由对象来调用,但,用类来调用此方法来也可以执行,而严格状态下,此方法会执行,同时报错, 
Strict Standards: Non-static method Human::easyeat() should not be called statically in D:\application\PHPnow-1.5.6\htdocs\yan18\types\staticfun.php on line 32

*/ 
Human::easyeat(); 
/* 
接上,从逻辑来理解,如果用类名静态调用非静态(普通)方法 
比如:intro() 
那么,这个$this是指哪个对象呢?? 
因此会报错,因为找不到对象! 
Fatal error: Using $this when not in object context in D:\application\PHPnow-1.5.6\htdocs\yan18\types\staticfun.php on line 23 
*/ 
Human::intro();

/* 
如上分析,其实,非静态方法,是不能由类名静态调用的,但目前,php中的面向对象检测不够严格,只要静态方法中没有$this关键字,就会转化成静态方法来处理! 
*/ 
$li=new Human(); 
$li->eat();

/* 
总结: 
类》访问->静态方法(类的方法)->可以 
类》访问->普通方法(对象的方法)->不可以(虽然方法里不用$this关键字时,可以!但不支持这种写法)

对象》访问》静态方法(类的方法)->可以 
对象》访问》普通方法(对象的方法)->可以

*/ 
?>

以上就是小编为大家带来的详谈php静态方法及普通方法的区别全部内容了,希望大家多多支持三水点靠木~

PHP 相关文章推荐
通过文字传递创建的图形按钮
Oct 09 PHP
php session和cookie使用说明
Apr 07 PHP
php中使用Akismet防止垃圾评论的代码
Jun 10 PHP
php 网上商城促销设计实例代码
Feb 17 PHP
PHP rawurlencode与urlencode函数的深入分析
Jun 08 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
全面解析PHP面向对象的三大特征
Jun 10 PHP
iis 7下安装laravel 5.4环境的方法教程
Jun 14 PHP
php批量转换文件夹下所有文件编码的函数类
Aug 06 PHP
thinkphp5引入公共部分header、footer的方法详解
Sep 14 PHP
php面试实现反射注入的详细方法
Sep 30 PHP
php操作路径的经典方法(必看篇)
Oct 04 #PHP
php将文件夹打包成zip文件的简单实现方法
Oct 04 #PHP
浅谈PHP中静态方法和非静态方法的相互调用
Oct 04 #PHP
PHP图片添加水印功能示例小结
Oct 03 #PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 #PHP
PHP实现生成带背景的图形验证码功能
Oct 03 #PHP
php使用CutyCapt实现网页截图保存的方法
Oct 03 #PHP
You might like
基于mysql的bbs设计(四)
2006/10/09 PHP
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
php不使用插件导出excel的简单方法
2014/03/04 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
javascript两段代码,两个小技巧
2010/02/04 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
JavaScript变量基本使用方法实例分析
2019/11/15 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
分享Python文本生成二维码实例
2016/01/06 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
python基础教程之匿名函数lambda
2017/01/17 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
质量工程师岗位职责
2013/11/16 职场文书
自我推荐书
2013/12/04 职场文书
运动会广播稿300字
2014/01/10 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
村级个人对照检查材料
2014/08/22 职场文书
布达拉宫导游词
2015/02/02 职场文书
七年级上册生物的课件
2019/08/07 职场文书
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers