PHP中静态关键字与自我关键字的区别是什么

介绍

这期内容当中小编将会给大家带来有关PHP中静态关键字与自我关键字的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强>静态关键字

PHP手册里对静态关键字的介绍如下:

代码如下:


将类属性或方法声明为静态使得他们不需要访问一个类的实例化。无法访问一个属性声明为静态和实例化类对象(尽管一个静态方法可以)。


大体意思是,将类的属性和方法声明为静态以后,可以直接访问静态属性和方法,而不需要实例化对象。

PHP中静态成员和方法的特性如下:

1。静态成员不能通过类的实例访问,但是静态方法可以。
2。静态成员不能通过→运算符访问。
3。在静态方法的作用域中,不能出现美元这关键字,也就是说不能在静态方法中访问普通的成员变量。
4。静态成员和方法,都可以通过类名直接访问,而无需实例化对象。

<强>迟绑定(延迟静态绑定)

下面的内容摘自PHP手册:

代码如下:


自PHP 5.3.0起,PHP增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类。
准确说,后期静态绑定工作原理是存储了在上一个“非转发调用”(non-forwarding调用)的类名。当进行静态方法调用时,该类名即为明确指定的那个(通常在::运算符左侧部分);当进行非静态方法调用时,即为该对象所属的类。所谓的“转发调用”(转发调用)指的是通过以下几种方式进行的静态调用:自我:父:静态::以及forward_static_call()。可用get_called_class()函数来得到被调用的方法所在的类名,静态:则指出了其范围。


对该特性的理解,可以参考下手册中的例子

<强>自我与静态

用一个演示来直接说明自我与静态的区别。
自我示例:

代码如下:


& lt; ?php
类车辆{
,,,保护静态$ name=& # 39;这是一个汽车# 39;;
,,,公共静态函数what_vehicle () {
,,,,,,,干净自己的回声get_called_class () \ n",,,,,,,,,,,,,,,
,,,,,,,回声self:: $名称;
,,,}
}
类轿车延伸汽车{
,,,保护静态$ name=& # 39;这是一个轿车# 39;;
}
轿车::what_vehicle ();


程序输出:

代码如下:


轿车
这是一个汽车


静态示例:

代码如下:


& lt; ?php
类车辆{
,,,保护静态$ name=& # 39;这是一个汽车# 39;;
,,,公共静态函数what_vehicle () {
,,,,,,,干净自己的回声get_called_class () \ n",,,,,,,
,,,,,,,回声静态::$名称;
,,,}
}
类轿车延伸汽车{
,,,保护静态$ name=& # 39;这是一个轿车# 39;;
}
轿车::what_vehicle ();

程序输出:

代码如下:


轿车
这是一个轿车

上述就是小编为大家分享的PHP中静态关键字与自我关键字的区别是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

PHP中静态关键字与自我关键字的区别是什么