喜迎
春节

php中,this、self、static的区别


  • this指当前类,不能用于静态成员函数中,使用形式:$this->
  • self是对静态成员函数/变量的访问,使用形式:self::
  • static和self很接近,唯一区别在于:self调用的是本身代码片段的这个类;而static调用的是从堆内存中提取出来的,即访问的是当前实例化的那个类。

下面看下测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class A{
public $name = 'Jams';
protected static $age = 26;

public function start(){
echo get_called_class() . '==>' . $this->name . '==>' . $this::$age;
}

public static function getAge(){
echo get_called_class() . '==>' . self::$age;
}

public static function getInfo(){
echo get_called_class() . '==>' . static::$age;
}
}

class B extends A{
public $name = 'Kiv';
protected static $age = 20;
}

(new B())->start();
B::getAge();
B::getInfo();

输出结果为:
B==>Kiv==>20
B==>26
B==>20


文章作者: Crazy Boy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Crazy Boy !
评 论
 上一篇
PHP中,通过&改变变量的值,效率如何
PHP中,通过&改变变量的值,效率如何
在PHP中,通过&改变变量的值,效率如何呢,下面来测试一下。 12345678910111213141516171819202122$arr = ['id' => null, 'name' => 'test', 'age
2022-06-02
下一篇 
PHP中isset与array_key_exists的性能对比
PHP中isset与array_key_exists的性能对比
前言:在开发中,之前判断数组中的键是否存在,我一直使用isset;今天看到有同事大量使用array_key_exists,闲来没事就测试了一下它们的性能。 12345678910111213141516$arr = ['id' =>
2022-06-02
  目录
hexo