分享

玩转类的静态

 印度阿三17 2019-01-10

静态

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.规定:能用静态的东西尽量使用静态,因为静态是属于类,直接可以使用类来访问(不需要实例化对象),减少了内存的损耗

静态的属性只会初始化一次;普通属性,实例化一次对象就初始化一次

三: 比较静态与非静态

从性能来讲

静态方法 :从程序运行开始 就实例生成内存 ,所以可以直接调用,效率会高很多,但是静态内存是有限制的,实例太多,程序直接启动不了,静态内存会常驻;

非静态方法:实例方法开始生成内存,在调用时申请零散的内存,所以效率会慢很多 ,非静态的用完就释放了;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多