Php:“静态”的行为与C类似吗?

时间:2012-04-25 12:57:32

标签: php optimization

我有一个“主类”,可以生成数据库访问。类似的东西:

class ObjetBd extends Objet
{
    protected $bd;
    public function __construct()
    {   
        parent::__construct();
        $this->bd = new BD();
        $this->bd->connect();
    }   
}

这对我来说是“干净”的代码(我为了紧凑而删除了评论)。

现在我的问题是为每个对象生成$this->bd

我想知道静态对象是否生成+初始化一次。

我想调用connect()一次并且只使用一个连接,而不使用直接调用静态方法(即继续像以前一样使用$this->bd

如果是这样的话,你能不能说下面的代码是否能完美运行,是否应该使用更少的资源:

class ObjetBd extends Objet
{
    static private $bd_static;

    protected $bd;

    public function __construct()
    {   
        parent::__construct();
        if (!isset(self::$bd_static)) {
            self::$bd_static = new BD();
            self::$bd_static->connect();
        }
        $this->bd = self::$bd_static;
    }
}

1 个答案:

答案 0 :(得分:0)

是的,你这样做是对的。 忽略单身评论,单身是一件好事,可以避免。

虽然我想提出一个建议:

我将假设BD是某种数据库。 OOP的强大功能是能够对事物进行子类化,并在不改变行为的情况下替换对象。

因此可能更好地在构造函数中传递$ bd对象。请记住一些事情。这称为“依赖注入”或“控制反转”。