详谈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 相关文章推荐
Apache设置虚拟WEB
Oct 09 PHP
php 执行系统命令的方法
Jul 07 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Dec 29 PHP
PHP程序漏洞产生的原因分析与防范方法说明
Mar 06 PHP
PHP临时文件的安全性分析
Jul 04 PHP
PHP扩展开发教程(总结)
Nov 04 PHP
必须收藏的php实用代码片段
Feb 02 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 PHP
form自动提交实例讲解
Jul 10 PHP
PHPTree――php快速生成无限级分类
Mar 30 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
PHP设计模式入门之状态模式原理与实现方法分析
Apr 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
php7安装yar扩展的方法详解
2017/08/03 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
js 日期转换成中文格式的函数
2009/07/07 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
webpack4+express+mongodb+vue实现增删改查的示例
2018/11/08 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
2018/11/11 Javascript
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
python登录QQ邮箱发信的实现代码
2013/02/10 Python
浅谈Python中的闭包
2015/07/08 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
Python多进程分块读取超大文件的方法
2016/04/13 Python
Python利用前序和中序遍历结果重建二叉树的方法
2016/04/27 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
pycharm远程调试openstack代码
2017/11/21 Python
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
护理学应聘自荐书范文
2014/02/05 职场文书
便利店投资创业计划书
2014/02/08 职场文书
汽车维修专业自荐书
2014/05/26 职场文书
有关环保的标语
2014/06/13 职场文书
绿色出行口号
2014/06/18 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
小学一年级语文教学反思
2016/03/03 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
python_tkinter事件类型详情
2022/03/20 Python