PHP之static

Posted ChotocateCat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP之static相关的知识,希望对你有一定的参考价值。

 1 静态成员
 2     class Stduent{
 3         private static $a;
 4     }
 5 
 6     Student::$a;  //需要加 $ ...对静态只有 获取或赋值
 7     :: 静态访问符  范围解析符
 8 
 9     在类内部 用 Studen::$a; self::$a; static::$a;
10 
11     在继承中
12         静态成员也会被继承 重写。
13 
14         self 和 static 的区别。
15         self:永远绑定代码所在的类。 当前定义类
16         static:调用时,确定类。    当前调用类  作用:定义 属性和方法,访问属性和方法。
17         class goods{
18             public $title=‘goods‘;
19             public static function getTitleSelf(){
20                 echo self::$title;
21             }
22 
23             public static function getTitleStatic(){
24                 echo static::$title;
25             }
26 
27         }
28 
29         class Books{
30             public $title=‘books‘;
31         }
32 
33         echo Books::getTitleSelf(); // echo goods;
34         echo Books::getTitleStatic() // echo books;
35 
36         总结经常使用static 符合逻辑。
37 
38         echo goods::getTitleSelf();  // echo goods;
39         echo goods::getTitleStatic(); // echo goods;
40 
41         总结:当类共享的数据和操作,定义为静态属性。
42                 被类独有的数据和操作,定义为非静态属性。
43 
44         class Student{
45             pirvate static $s_count; //记录学生 增加 ++
46 
47             public function __construct(){
48                 echo ++static::$s_count;
49             }
50 
51             //当对象被销毁时候 ,应该减去
52             public function __destruct(){
53                 echo --static::$s_count;
54             }
55 
56             public function __clone(){  //当对象被克隆的时候
57                 echo ++static::$s_count;
58             }
59         }        
60 
61         绑定在类上的关键字:self 当前定义类 parent 父类 static 当前调用类 
62 
63         语法细节:
64             无论通过类或者对象都可以调用 静态 和 非静态。  局限于 方法。 属性不可以。
65 
66             规范化: 对象只调用非静态。 类只调用静态。
67 
68         class Demo{
69             public function nonStaticFunc(){
70                 echo "non static";
71             }
72             public static function statucFunc(){
73                 echo "static fun";
74             }
75         }    
76 
77         $d = new Demo();
78         $d->nonstaticFunc();  //执行输出结果
79         $d->staticFunc();    //执行输出结果  会报告一个 语法不严谨警告。

 

以上是关于PHP之static的主要内容,如果未能解决你的问题,请参考以下文章

PHP面向对象编程之延迟静态绑定(static关键字)

PHP面向对象编程之延迟静态绑定(static关键字)

PHP之static静态变量详解

php变量之static关键词

PHP面向对象之事务脚本模式

深入理解PHP原理之Opcodes