PHP也不例外!所谓静态方法(属性)就是以static关键词标注的属性或者方法(例如:静态属性public static username;)
静态方法和非静态方法最大的区别在于他们的生命周期不同,用一个实例来说明
静态方法定义
定义静态方法很简单,在声明关键词function之前加上static,例如:
代码如下 | 复制代码 |
class A |
静态方法使用
使用的时候和静态变量差不多,不需要实例化,直接用::调用,例如:
代码如下 | 复制代码 |
A::fun() |
对比普通方法
因为静态方法的调用不需要实例化,所以在静态方法中引用类自身的属性或者方法的时候会出错,也就是形如self和$this是错误的。
代码如下 | 复制代码 |
class MyClass function __construct() function fun_1() static function fun_2() function fun_3($n) $m = new MyClass; MyClass::fun_1(); 输出结果: lch@localhost:php $ php class_method.php |
再看一实例
用一个实例来说明。
代码如下 | 复制代码 |
class user{ function __construct($pwd) { public function show(){ //输出类属性 public static function sshow(){ /* |
从这里实例中可以看出,静态属性在类实例化以前就起作用了,并且在对象被销毁时静态属性依然可以发挥作用!
也因为静态方法的这种属性,所以不能在静态方法中调用非静态属性或者方法
接着看
1、php类中,假设所有的属性与方法的可见性为public,那么在外部访问类的方法或属性时,都必须通过对象【类的实例化过程】来调用。
eg:
代码如下 | 复制代码 |
class Log |
类的实例化对象的过程:$logObj = new Log();
访问类中的方法:$logObj->writeLog($param1, $param2, $param3, $param4);
访问类中的属性:echo $logObj->root;
2、如果类中的属性前被static关键字修饰时,就不能通过对象来访问被static修饰的属性,但如果是类中的方法被static修饰时则即可以通过对象也可以通过类名::方法名的方式来进行访问。
3、如果类中的方法被static修饰则,方法中不能用$this,$this指的是类的实例化对象,由于静态方法不用通过对象就可以调用,所以伪变量$this不可用。
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级