目录
静态
php 提供了一个 static 关键字,这个关键字用来标识静态方法或者静态变量;
静态分为两种:静态属性和静态方法;
静态的东西是属于类,非静态的属于对象(除了常量);
一: 静态属性
1.概念:在定义属性的时候使用static关键字进行修饰的属性,称之为静态属性
2.静态属性调用:通过类来进行调用
3.语法:
- 在类的外部 类名::$静态属性
- 在类的内部 self::$静态属性
4.eg:
<?php
class Father
{
//定义静态属性
public static $money=10000;
public function getMoney()
{
echo self::$money; //在类的内部访问静态属性,注意$符号
}
}
//访问静态属性
$f = new Father();
//静态属性不属于对象,属于类,用类访问,注意加上$,否则会被当做常量处理
echo Father::$money;
echo "<br />";
$f->getMoney();
?>
二: 静态方法
1.概念:在定义方法的时候使用static关键字进行修饰的方法,称之为静态方法
2.静态方法的访问,语法:
- 类名::静态方法名(外部)
- self::静态方法名( 类内部)
3.说明:对象操作方法,必须进入到类的内部,又因为静态方法是属于类,所以对象也能访问静态方法。
4.强制性规定:静态的东西归类所有,所以使用类进行访问,非静态(除了常量)的交给对象初始化一次;
5.规定:能用静态的东西尽量使用静态,因为静态是属于类,直接可以使用类来访问(不需要实例化对象),减少了内存的损耗
静态的属性只会初始化一次;普通属性,实例化一次对象就初始化一次
三: 比较静态与非静态
从性能来讲
静态方法 :从程序运行开始 就实例生成内存 ,所以可以直接调用,效率会高很多,但是静态内存是有限制的,实例太多,程序直接启动不了,静态内存会常驻;
非静态方法:实例方法开始生成内存,在调用时申请零散的内存,所以效率会慢很多 ,非静态的用完就释放了;