PHP:Singleton设计模式或静态类

时间:2014-04-08 10:45:22

标签: php joomla singleton

我从joomla使用。
我在joomla有一个自定义库。
我们为了避免过多的内存,使用静态类,如:

class foo
{
    publc static function hello()
    {
        return "HI";
    }
}

并将其命名为:

foo::hello()

这是最好的方式吗? 我们想要在没有任何实例的情况下使用类中的函数。技术原因是什么?
如何单身?

3 个答案:

答案 0 :(得分:0)

实例本身不使用内存。使用内存的是文件和实例信息。 如果使用静态类,则将使用相同数量的内存。 这是优化代码的一种极端方式。不太好,但我会给你点尝试。

答案 1 :(得分:0)

根本不要把功能放在一个类中。这不是Java。

function hello() {
    return "HI";
}

答案 2 :(得分:0)

这是一种有益于学习,具有良好意图但具有固有弱点的设计模式之一,这使得有经验的程序员在提到时会引发呕吐反射。简而言之,随着项目的发展,过度使用单例模式将抑制代码的增长和重用性。单例模式的基本意图是防止同一对象的多个实例化,因为Web框架的各个部分在单个页面呈现中访问您的单例。

如果您想要使用模式来简化代码,这是一件好事;但一定要将正确的模式应用于正确的问题。例如注册表,工厂,抽象工厂和依赖注入是我在开始时要探索的一些例子。

最后,这是一个用于PDO连接的单例类的示例,来自我的一本许多 php书籍,PHP Master:编写最前沿的代码。

class Database extends PDO
{
    private static $_instance = null;

    private function __construct() {
        parent::__construct(APP_DB_DSN, APP_DB_USER, APP_DB_PASSWORD);
    }

    public static function getInstance() {
        if(!(self::$_instance instanceof Database)) {
            self::$_instance = new Database();
        }

        return self::$_instance;
    }
}