background image

我们只有一次 require 的机会,否则就会出现重复定义的错误。

对象的价值
如果放弃静态类,转而使用对象,应该如何实现文章管理系统的例子?代码如下:

 

复制代码 代码如下:

<?php
class Article
{
private $dao;
public function __construct($dao = null)
{
if ($dao === null) {
$dao = new ArticleDAO();
}
$this->setDao($dao);
}
public function setDao($dao)
{
$this->dao = $dao;
}
public function save()
{
$this->dao->save();
}
}
?>

实际上,这里用到了人们常说的依赖注入技术,通过构造器或者 Setter 注入依赖的对象:

 

复制代码 代码如下:

<?php
$article = new Article(new MockArticleDAO());
$article->save();
?>

对象有自己的状态,不会发生共享状态干扰其它代码的执行的情况。

当然,静态类有好的一面,比如说很适合实现一些无状态的工具类,但多数时候,我的
主观倾向很明确,多用对象,少用静态类,避免系统过早的固化。顺便说一句,希望别有
人告诉我静态类比对象快之类的说教,谢谢。