静态变量是经过修饰的函数变量,在某个函数执行完成之后,它的值仍然不会丢失,使用static关键字可以创建静态变量,同时还可以提供一个默认的初始化之。不过,这个初始化值不能是一个表达式。当时用全局变量来模拟静态变量时,有可能发生变量名冲突的现象,静态变量在消除这一冲突方面是非常有用的。

  static关键字还可以用在类中来修饰属性和方法。用在属性上时,它使属性不再为每个实例保存一个值,而是值为整个类自身保存一个值。这个值也可以被当作是类的所有实例之间共享的值。

  要访问静态方法,可以使用双冒号操作符(::),它也被称为作用域限定操作符。这个操作符的左边是一个类名或这个某个预定义作用域,预定义作用域包括self、parent或者PHP 7中的static。操作符的右边是一个静态方法、变量或者常量。在类中使用self预定义作用域时,它代表的是类自身。而parent预定义作用域代表的是父类,当我们需要访问可能已经被重写的基类中的方法时,parent作用域非常有用。

  静态类会对特定类型的测试产生影响。当在PHP中使用静态类时,loC设计原则会受到限制。这是因为静态特性的使用会导致类之间通过名称绑定在一起,这使得单独地测试某个组件变得更加困难。不过,大多数PHP应用程序最终没有采用IoC设计原则,并且静态特性的使用通常会被优先考虑。

IoC设计原则:试图在OOP中去掉所有的相互依赖现象。控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。