如有错误,望您留言指正
一、作用(4种)
- 定义属性
- 定义静态方法
- 定义静态变量
- 后期静态绑定
二、详细介绍
例:
//Student1属性及方法均设置静态,
//Student2属性及方法不设置静态,
class Student1{
static $name = "Kangkang";
static function outPutInfo(){
echo "age:18;sex:man";
}
static function putn
}
class Student2{
public $name = "Kangkang";
public function outPutInfo(){
echo "age:18;sex:man";
}
}
1、静态属性
- 类未实例化可以直接访问,实例化后**不可**访问
```
echo Student1::$name; //输出 Kangkang
$student = new Student1();
echo $student->name;//Undefined property: Student1::$name
```
- 如果没有访问控制,默认共有(public)
- 只能被初始化为文字或常量,不能使用表达式
```
class Student1{
$a = 1;
static $name = $a;//此处会报错
}
```
2、静态方法
- 类未实例化可以直接访问,实例化后**可以**访问
- 如果没有访问控制,默认共有(public)
- 由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。
3、 静态变量
属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该 区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束。
也就是说,除非程序结束,否则一直占着空间。
4、后期静态绑定
- 自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类。
说明看不懂,直接举例:
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
self::who();
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
class C extends A {
public static function who() {
echo __CLASS__;
}
//重写了test方法
public static function test() {
self::who();
}
}
B::test()."\n";//输出A
C::test();//输出C
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。