我看到一个项目里的代码,里边大量用到如下的方式来写单例模式
/**
     * Singleton
     */
    function &getInstance()
    {
        static $instance;
        if (!isset($instance)){
            $c = __CLASS__;
            $instance = new $c();
        }
return $instance;
        
    }由于是刚刚接触php,查语法也没有查到 $c= __CLASS__; $instance = new $();的意思,请问大家这是什么意思啊,php里怎么还有这样怪异的代码?
谁能解释一下$c = __CLASS__;
            $instance = new $c();
这两行的代码的意思,谢谢。

解决方案 »

  1.   

    手册还可以按目录查询,这种东西叫魔术常量
    ===============================
    __LINE__ 文件中的当前行号。  
    __FILE__ 文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。  
    __FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。  
    __CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。  
    __METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
    __CLASS__表示当前类的名字.$c = __CLASS__;
    $instance = new $c(); //实例化当前类,生成实例化对象。
      

  2.   

    static $instance = new .....
    return $instance; C++中可以利用static只初始化一次这样简化,php中不知道可不可以