详谈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 相关文章推荐
关于PHP中Object对象的笔记分享
Jun 28 PHP
PHP If Else(elsefi) 语句
Apr 07 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
Dec 20 PHP
php中cookie实现二级域名可访问操作的方法
Nov 11 PHP
在Nginx上部署ThinkPHP项目教程
Feb 02 PHP
php二维数组合并及去重复的方法
Mar 04 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
[原创]php正则删除html代码中class样式属性的方法
May 24 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
May 27 PHP
详解PHP用mb_string处理windows中文字符
May 26 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
php自动注册登录验证机制实现代码
2011/12/20 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
js获取字符串最后一位方法汇总
2014/11/13 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
Django中Forms的使用代码解析
2018/02/10 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
python 实现屏幕录制示例
2019/12/23 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
罗马尼亚购物网站:Vivantis.ro
2019/07/20 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
大学生冰淇淋店商业计划书
2014/01/14 职场文书
运动会通讯稿300字
2014/02/02 职场文书
师范生求职自荐信
2014/06/14 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
爱心捐款活动总结
2015/05/09 职场文书
素质拓展训练感想
2015/08/07 职场文书
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android