详谈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程序之die调试法 快速解决错误
Sep 17 PHP
php面向对象全攻略 (十七) 自动加载类
Sep 30 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
Apr 03 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 PHP
Swoole扩展的6种模式深入详解
Mar 04 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
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
BootStrap创建响应式导航条实例代码
2016/05/31 Javascript
纯javascript版日历控件
2016/11/24 Javascript
js实现表格筛选功能
2017/01/18 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
Python实现SMTP发送邮件详细教程
2021/03/02 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
python模拟表单提交登录图书馆
2018/04/27 Python
python将回车作为输入内容的实例
2018/06/23 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
python获取引用对象的个数方式
2019/12/20 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
给老婆的婚前保证书
2014/02/01 职场文书
环保建议书100字
2014/05/14 职场文书
落实八项规定专题民主生活会对照检查材料
2014/09/15 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis