PHP面向对象编程(OOP)学习笔记(二)-静态变量的属性和

静态(静态)关键字用于定义静态方法和属性,静态也可用于定义静态变量和以后静态绑定。

1。静态可变静态变量

静态变量只存在于局部函数域中,但当程序执行该字段时,该值不会丢失。也就是说,当下次执行此函数时,变量仍将记住原始值。

复制代码代码如下所示:
功能测试()
{
静态$ = 1;
$ a=2;
$;
}
测试();
测试();
测试();
测试();

* 2
* 4
* 8
* 16
*在0. 1秒} {完成
* /


静态变量也提供了一种处理递归函数的方法。递归函数是一种调用自己的函数。在编写递归函数时要小心,因为它可能是无限递归的。有必要确保有足够的方法停止递归。

在这种情况下,测试()函数将变量的值在美元后执行。当下次测试()函数被调用时,美元价值的恢复,和测试()函数将值2和打印它。一个变量的初始默认值是1,这个任务会只有当变量是首先初始化发生。这个操作并不是每个函数调用的执行过程。

2,在类中使用静态元素

班上有两个静态关键字的主要用途,一是用于定义静态成员,而另一个是用来定义静态方法,声明类的属性或方法是静态的,可以无需实例化的类直接访问。静态性能不能用,已由一个类实例化一个对象访问(但静态方法),静态属性是不可访问的对象通过->运算符。在类中,我们可以使用作用域操作符访问不同行动变量。

2.1。静态特性

Because static methods do not need to be invoked through an object, the pseudo variable $this is not available in a static method.A static variable can be regarded as an entire class rather than an instance of the class.Unlike general instance variables, static attributes retain only one variable value, which is valid for all instances, that is, all instances share this attribute.

复制代码代码如下所示:
MyObject类
{
公共静态$ = 0;
MyMethod()函数
{
自我::$ = 2;
:;
}
}
请为新的MyObject(美元);
请美元->(MyMethod);
instance2美元=新的MyObject();
instance2美元->(MyMethod);

*
* 2
* 4
*在0. 1秒} {完成
*
* /


这个索引$是类的当前实例,是对调用对象的引用。

自我:类本身被表达。当使用自:范围限定符时,必须在运算符后面添加$符号。我们不能使用这个操作符在类代码,也不能确定在继承树的层次结构中的位置。用自我:在扩展类:当范围范围,自可调用的方法在基类中声明,但它总是调用的方法已经在扩展类中重写。

父::在扩展类中,如果重写基类,如果您想访问基类,可以使用父级::

静态::它使我们不再需要使用::和父::当您指向实现函数的最后一个类时,您可以使用静态的。这个限定符将在代码执行前立即计算继承层次结构的最后一个类成员。

2.3,静态方法

的静态方法规则为静态变量一样使用static关键字,这个方法可以被标记为一个静态方法和静态方法可以通过类的作用域的名称访问操作符(::)。

静态和非静态方法之间有一个重要的区别:当调用静态方法时,我们不需要有类的实例。

复制代码代码如下所示:
类myobjectbase
{
静态函数MyMethod()
{
静态::MyOtherMethod();
}
静态函数MyOtherMethod()
{
echo'called从MyObject;
}
}
类myextendobject延伸myobjectbase
{
静态函数MyOtherMethod()
{
echo'called从myextendobject。;
}
}
MyExtendObject::MyMethod();


此代码将myothermethod称MyExtendObject的正确方法,称为从myextendobject。{ }输出成品在0. 1秒。

如果该变量未包含在方法中,则该方法应该是静态方法。如果不需要某个类的实例,则还应使用静态类,以便避免实例化工作。此外,该变量在静态方法中不使用,因为静态方法不属于特定实例。

2.4。延迟绑定

静态::它使我们不再需要使用::和父::当您指向实现函数的最后一个类时,您可以使用静态的。这个限定符将在代码执行前立即计算继承层次结构的最后一个类成员。

三.总结

使用静态关键字,您可以创建静态变量,也可以提供默认的初始化值。静态变量是一个修改的函数变量,执行一个函数后,他的值不变。

静态关键字也可以用来修改类中的属性和方法,当它被用于属性时,它使属性不再为实例保存一个值,而是为整个类本身保存一个值,并且静态属性可以在成员之间共享。

对静态方法的访问可以使用(::),称为范围限定符。操作符的左边可以是类名或预定义的范围,预定义的范围包括自父静态。操作符的右边是静态方法和属性。