用法:是一个修饰符,用于修饰成员(成员变量,成员函数)
在使用static修饰后,不管你实例化多少个对象,属性和方法在内存中共享,知道程序执行完销毁。
所以特别注意要的是在常驻的执行的脚本中实例化对象,一旦实例化就不会动态改变。
例如:
<?php
class PayFactory
{
public static function drive($method)
{
$class_name = ucfirst($method . 'Pay');
include ($class_name . '.php');
return new $class_name();
}
}
在常驻的同一个程序中执行如下
var_dump(PayFactory::drive("AliPay")->create(['a'=>1])); //生效
var_dump(PayFactory::drive("WxPay")->create(['a'=>1])); //不生效,还是上面的AliPay的对象