详谈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 相关文章推荐
漂亮但不安全的CTB
Oct 09 PHP
PHP伪造referer实例代码
Sep 20 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
Jul 04 PHP
PHP读取xml方法介绍
Jan 12 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
Jun 17 PHP
php生成静态页面的简单示例
Apr 17 PHP
php生成xml时添加CDATA标签的方法
Oct 17 PHP
php中stdClass的用法分析
Feb 27 PHP
php指定长度分割字符串str_split函数用法示例
Jan 30 PHP
PHP培训要多少钱
Jun 06 PHP
windows 2008r2+php5.6.28环境搭建详细过程
Jun 18 PHP
laravel入门知识点整理
Sep 15 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
Zend Guard一些常见问题解答
2008/09/11 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
2013/06/05 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
php中namespace及use用法分析
2016/12/06 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
微信小程序swiper左右扩展各显示一半代码实例
2019/12/05 Javascript
vue远程加载sfc组件思路详解
2019/12/25 Javascript
小小聊天室Python代码实现
2016/08/17 Python
Python简单读取json文件功能示例
2017/11/30 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
pytorch之添加BN的实现
2020/01/06 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
python TCP包注入方式
2020/05/05 Python
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
单身联谊活动方案
2014/01/29 职场文书
党的群众路线教育实践活动个人整改措施
2014/10/27 职场文书
财务统计员岗位职责
2015/04/14 职场文书
教师节简报
2015/07/20 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
Java的Object类的九种方法
2022/04/13 Java/Android