【问题标题】:Are static classes bad practice in PHP?PHP中的静态类是不好的做法吗?
【发布时间】:2011-09-22 05:56:51
【问题描述】:

我想知道其他人对他们的看法。

(“静态类”是指所有函数和变量都是静态的类)。

我发现它们非常实用。我有这个通过 $Db 访问的 PDO 自定义类,我必须在每个必须查询数据库的函数上“全局 $Db”。

我刚刚了解了静态类以及它们如何不需要在函数中进行全局化。我将 PDO 类设为静态类,从使用它的函数中删除了所有“全局 $Db”,并像 DB::function() 一样调用它,它像以前一样工作,没有问题,我不会有从现在开始到“global $Db”。我很想对我经常使用的其他类做同样的事情。

所以我觉得做一件好事太好了。还是这样?

【问题讨论】:

标签: php static-classes


【解决方案1】:

要在 PHP 中做类似的事情,您可以使用单例静态函数在您的所有代码中为一个类运行一个对象的单个实例。

class MyClass
{
    private static $s_instance;

    public static function getInstance()
    {
        if (!self::$s_instance)
        {
            self::$s_instance = new MyClass();
        }

        return self::$s_instance;
    }

    private function __construct(...) { ... }

    // All your non-static stuff

}

【讨论】:

  • 这如何回答 OP 的问题?
  • @Pekka “我有这个 PDO 的自定义类,我通过 $Db 访问它,我必须在每个必须查询数据库的函数上“全局 $Db”。", "我刚刚了解了静态类以及它们如何不需要在函数中全局化。”。我提供了一个适合这些描述的类似概念,因为您可以从任何函数调用 getInstance 以返回单例对象。它也比静态类更值得推荐。
猜你喜欢
  • 2011-02-14
  • 1970-01-01
  • 2011-07-07
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 2013-05-23
相关资源
最近更新 更多