{
    public static final function getInstance()
    {
        return parent::getInstance();
    }
    public static final function removeInstance()
    {
        parent::removeInstance();
    }
}
//using
class FirstProduct extends Factory
{
    public $keys = [];
}
class SecondProduct extends FirstProduct
{
}
FirstProduct::getInstance()->keys[] = 1;
SecondProduct::getInstance()->keys[] = 2;
FirstProduct::getInstance()->keys[] = 3;
SecondProduct::getInstance()->keys[] = 4;
FirstProduct::getInstance()->keys[] = 5;
var_dump(FirstProduct::getInstance()->keys);
var_dump(SecondProduct::getInstance()->keys);
var_dump(FactoryAbstract::getInstanceList());
FirstProduct::removeInstance();
var_dump(FactoryAbstract::getInstanceList());
var_dump(FirstProduct::getInstance()->keys);
var_dump(SecondProduct::getInstance()->keys);
var_dump(FactoryAbstract::getInstanceList());
Esempio n. 2
0
            self::$instances[$class] = new $class();
        }
        return self::$instances[$class];
    }
    protected static final function getClassName()
    {
        return get_called_class();
    }
}
abstract class Factory extends FactoryAbstract
{
    public static final function getInstance()
    {
        return parent::getInstance();
    }
}
class FirstProduct extends Factory
{
    public $a = [];
}
class SecondProduct extends FirstProduct
{
}
FirstProduct::getInstance()->a[] = 1;
SecondProduct::getInstance()->a[] = 2;
FirstProduct::getInstance()->a[] = 3;
SecondProduct::getInstance()->a[] = 4;
print_r(FirstProduct::getInstance()->a);
// array(1, 3)
print_r(SecondProduct::getInstance()->a);
// array(2, 4)