PHP从接口抽象静态方法

PHP从接口抽象静态方法,php,interface,static,singleton,abstract,Php,Interface,Static,Singleton,Abstract,我有一个网站的“基础”,可以扩展到创建特定的应用程序。在我的核心特性中,我有一个抽象类C_控制器,它必须是单例的。 为了使用核心功能创建特定的应用程序,开发人员必须扩展此C_控制器类。这个类(我们称之为C_应用程序)也必须是一个单例。 为了强制开发人员实现自己的getInstance方法,我做了以下工作: interface I_Singleton { public static function getInstance(); } abstract class C_Controller

我有一个网站的“基础”,可以扩展到创建特定的应用程序。在我的核心特性中,我有一个抽象类C_控制器,它必须是单例的。 为了使用核心功能创建特定的应用程序,开发人员必须扩展此C_控制器类。这个类(我们称之为C_应用程序)也必须是一个单例。 为了强制开发人员实现自己的getInstance方法,我做了以下工作:

interface I_Singleton
{
    public static function getInstance();
}

abstract class C_Controller implements I_Singleton
{
    public abstract static function getInstance();
}
然后,开发人员必须在其子类中实现该函数:

class C_Application extends C_Controller
{
    public static function getInstance() { ... }
}
我已经为我的视图这样做了,但它是一个非静态方法(_-toString)。我已经读到,自从PHP5.2以来,不可能有抽象的静态方法,所以有没有一种干净的方法可以做到这一点

由于我使用的是免费的web托管服务,我只能使用PHP 5.2。


谢谢你的帮助

如果您希望
C_Controller
成为单例,它应该实现
getInstance
,并且您的代码应该调用
C_Controller::getInstance
来访问该对象。这是singleton最重要的一点:通过基类的静态方法访问派生类的对象。不要使用singleton。他们是。记住,你不需要把所有的东西都放在一节课上;免费功能很好。是的,我也可以用汇编语言编写我的整个网站,它终究能工作。我想使用单例,因为我想要一个哑巴证明编码环境:)