原程序如下:
class os_cart {
public function pay() {
//do something
}
….
}
os_cart::pay();
即然成员函数声明的不是static的,为什么可以使用静态模式来调用呢?这样
为什么不会报错呢?查了一下文档,原来和error_reporting函数相关。如果
error_reporting的设置包含了E_STRICT的话,那么程序会进行严格的检查,
对于非静态函数进行静态方式调用,就会报错。如果将E_STRICT错误过滤掉
的话,就不会报错了。
error_reporting的设置方式:
1 在php.ini配置文件中进行配置,相关值如下列表:
| value | constant |
|---|---|
| 1 | E_ERROR |
| 2 | E_WARNING |
| 4 | E_PARSE |
| 8 | E_NOTICE |
| 16 | E_CORE_ERROR |
| 32 | E_CORE_WARNING |
| 64 | E_COMPILE_ERROR |
| 128 | E_COMPILE_WARNING |
| 256 | E_USER_ERROR |
| 512 | E_USER_WARNING |
| 1024 | E_USER_NOTICE |
| 2047 | E_ALL |
| 2048 | E_STRICT |
2 在程序中进行设置,在程序入口处使用error_reporting函数进行设置
如 error_reporting(E_ALL | E_STRICT);这里需要说明的是,E_ALL并
不包含E_STRICT。