$_SESSION['mycart']=new myCart();如题;
声明:if(!isset($_SESSION['mycart'])) $_SESSION['mycart']=new myCart();
不好使.谢谢

解决方案 »

  1.   

    供参考。
    <?php
    session_start();
    class a
    {
      var $a;
      
    function a()
    {
    $_SESSION['a_init'] = 1;
    }
    function b()
    {
    }

    }
    $b = new a();
    if($_SESSION['a_init'] == 1) echo "已实例化";
    ?>
      

  2.   

    首先要说明你的PHP的版本4.x还是5.x。
    不同的版本对面向对象的支持不一样!PHP 5.x的话和其他面向对象程序设计语言的Singleton设计是类似的。
    (里面有static成员函数和private访问控制修饰符)PHP 4.x的话一般是通过命名约定,也就是给静态调用的成员函数取__staticMF()这样的名字。
    然后再$GLOBALS里面放置一个此类的对象。然后每次使用时调用“静态”的__getInstance()函数。
      

  3.   

    /**
     * return a class's singleton
     *
     * @param string $classname
     * @return object
     */
    function & getSingleton($classname) 
    {
    //TODO registry register    static $objs = array();    if (isset($objs[$classname])) 

    return $objs[$classname]; 
    }
        if (!class_exists($classname)) 

    loadClass($classname);
    }
        $objs[$classname] = new $classname();
        return $objs[$classname];
    }
      

  4.   

    上面的函数中的loadClass,是我定义的另一个函数你可以改成,require 'xxx.php';//其中xxx.php是定义那个类的文件
      

  5.   

    我的例子和iasky的类似 
    <?class SingleClass{ public static function getInstance(){
    static $single;
    if($single==null){
    $single=new SingleClass();
    return $single;
    }else return $single;
    } private $t=null; function __construct(){
    $this->t=date("Y/m/d h:i:s");
    echo "SingleClass construct ".$this->t;
    }
    }SingleClass::getInstance();
    SingleClass::getInstance();
    SingleClass::getInstance();
    ?>每次都调用 SingleClass::getInstance(); 就可以得到这个类的实例并且只被初始化一次
      

  6.   

    单件模式就可以:
    class singleDataBase {
    //私有数据库属性
    private $type;
    private $config;
    //私有数据库连接对象
    private $CONN;
    //私有构造函数
    //禁止类外调用,保证类不能外面实例化.
    private function __construct($inType = null,$inConfig = null) {
    $this->type = intval($inType);
    $this->config = $inConfig;
    switch(intval($this->type)) {
                        //这里个人代码........
                       }
    private static $DB = null;
    //私有静态返回对象.
    //通过null来判断出该对象是否已经建立过,假如建立过则返回数据对象.
    private static function setDb($inType = null,$inConfig = null) {
    if(self::$DB === null) {
    self::$DB = new singleDataBase($inType,$inConfig);
    }
    return self::$DB;
    }
    //提供公有静态调用接口,来调用  私有静态返回实例.
    public static function getDb($inType = null,$inConfig = null) {
    return self::setDb($inType,$inConfig);
    }
    }
    $db = singleDataBase::getDb(1,5);
    var_dump($db);
      

  7.   

    不知道这是不是你想要的:
    class ClassUser
    {
       .....
       function &instance($uid)
       { 
         static $instance;
         if (!isset($instance)) {
             $instance = new ClassUser($uid);
         }
         return $instance;
       }
       .....
    }
    $oUser = ClassUser::instance($uid);
      

  8.   

    补充:
    实例化时应该是:
    $oUser &= ClassUser::instance($uid);
      

  9.   

    $oUser =& ClassUser::instance($uid);
      

  10.   

    等php6,或php7看吧。要不自己改改源代码。
      

  11.   

    上面的都离题万里...
    可能要到php8