background image

PHP 静态类的坏处弊端

黑格尔有句名言:存在即合理。以此为论据的话,静态类的使用必然有其合理性。不过物
极必反,一旦代码过于依赖静态类,其劣化的结局则不可避免。这就好比罂粟作为一种草
本植物,有其在药理上的价值,但如果肆无忌惮的大量使用,它就变成了毒品。
什么是静态类
所谓静态类指的是无需实例化成对象,直接通过静态方式调用的类。代码如下:

代码如下:

<?php
class Math
{
public static function ceil($value)
{
return ceil($value);
}
public static function floor($value)
{
return floor($value);
}
}
?>

此时类所扮演的角色更像是命名空间,这或许是很多人喜欢使用静态类最直接的原因。
静态类的问题
本质上讲,静态类是面向过程的,因为通常它只是机械的把原本面向过程的代码集合到
一起,虽然结果是以类的方式存在,但此时的类更像是一件皇帝的新衣,所以可以说静
态类实际上是披着面向对象的壳儿,干着面向过程的事儿。
面向对象的设计原则之一:针对接口编程,而不是针对实现编程。这有什么不同?打个比
方来说:抛开价格因素,你喜欢独立显卡的电脑还是集成显卡的电脑?我想绝大多数人
会选择独立显卡。独立显卡可以看做是针对接口编程,而集成显卡就就可以看做是针对实
现编程。如此说来针对实现编程的弊端就跃然纸上了:它丧失了变化的可能性。
下面杜撰一个文章管理系统的例子来具体说明一下:

 

复制代码 代码如下:

<?php
class Article
{