Example #1
0
    {
        return new FooTypeA();
    }
}
class FactoryTypeB extends AbstractFactory
{
    public function createFoo()
    {
        return new FooTypeB();
    }
}
abstract class Foo
{
    public abstract function doStuff();
}
class FooTypeA extends Foo
{
    public function doStuff()
    {
        return "FooTypeA";
    }
}
class FooTypeB extends Foo
{
    public function doStuff()
    {
        return "FooTypeB";
    }
}
echo AbstractFactory::obtainFactory()->createFoo()->doStuff();