PHP 中的静态类是不好的做法吗?

发布于 2024-11-16 23:11:15 字数 321 浏览 5 评论 0原文

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

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

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

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

所以我觉得这太美好了,算不上是一件好事。或者是吗?

I would like to know what other people think about them.

(With "static classes" I mean a class whose all functions and variables are static).

I've found them very practical. I have this custom class for PDO that I accessed through $Db, and I had to "global $Db" on every function that had to make queries to the database.

I just found out about static classes and how they don't need to be globaled in functions. I made the PDO class a static class, removed all the "global $Db" from the functions that used it and call it like DB::function(), it works just like before, with no problems, and I won't have to "global $Db" from now on. I'm tempted to do the same with other classes I use often.

So I find it too nice to be a good thing. Or is it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鱼窥荷 2024-11-23 23:11:15

要在 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

}

To do something similar in PHP you can use singletons static functions to run a single instance of an object for a class throughout all your code.

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

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文