详谈php静态方法及普通方法的区别
来源:互联网 发布:勇士vs活塞数据10.30 编辑:程序博客网 时间:2024/06/05 15:21
<?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关键字时,可以!但不支持这种写法)
对象》访问》静态方法(类的方法)->可以
对象》访问》普通方法(对象的方法)->可以
*/
?>
阅读全文
0 0
- 详谈php静态方法及普通方法的区别
- php中静态方法和普通方法的区别初探(一)
- PHP中静态方法(static)与非静态方法的使用及区别(转)
- PHP中静态方法(static)与非静态方法的使用及区别
- PHP中静态方法(static)与非静态方法的使用及区别
- PHP中静态方法(static)与非静态方法的使用及区别
- static 静态方法 有什么优缺点 PHP中静态方法(static)与非静态方法的使用及区别
- static 静态方法 有什么优缺点 PHP中静态方法(static)与非静态方法的使用及区别
- static 静态方法 有什么优缺点 PHP中静态方法(static)与非静态方法的使用及区别
- PHP中 static 静态方法有什么优缺点 静态方法与非静态方法的使用及区别
- 普通成员变量与静态成员变量的区别、普通成员方法与静态成员方法的区别
- PHP静态方法与非静态方法的区别
- PHP静态方法和非静态方法的区别
- 静态代码块,静态属性,静态方法,普通代码块,普通方法,普通属性,构造方法的加载顺序及执行顺序
- day08_Python3的普通方法和静态方法
- synchronized用于静态方法和普通方法区别
- synchronized修饰静态方法和普通方法有什么区别
- php 内的静态变量及静态方法
- 模板类,通用类型名与非类型参数
- secureCRT同时向多个打开的seesion发送命令
- 禅道的进阶使用
- Cookie是什么
- 常用排序算法总结(一)
- 详谈php静态方法及普通方法的区别
- [翻译] C# 8.0 预览
- 八种基本数据类型及封装类 与 一些基本数据类型的类封装(包装类)
- 美国学者:中国正处在失去中国固有传统的危险中
- Noip[2011]Codevs[1135]洛谷[1311]选择客栈 清流解法,二分+线段树+树状数组
- STL学习笔记——序列式容器(一级容器)
- 线性代数笔记-8 Ax=b可行解及解的结构
- 禅道的维护配置
- 手写识别项目暑假总结(7.24)