SimpleFactory is a simple factory pattern.
It differs from the static factory because it is NOT static and as you know: static => global => evil!
Therefore, you can have multiple factories, differently parametrized, you can subclass it and you can mock-up it.
You can also find these code on GitHub
SimpleFactory.php
.. literalinclude:: SimpleFactory.php :language: php :linenos:
VehicleInterface.php
.. literalinclude:: VehicleInterface.php :language: php :linenos:
Bicycle.php
.. literalinclude:: Bicycle.php :language: php :linenos:
Scooter.php
.. literalinclude:: Scooter.php :language: php :linenos:
$factory = new SimpleFactory();
$bicycle = $factory->createVehicle('bicycle');
$bicycle->driveTo('Paris');
Tests/SimpleFactoryTest.php
.. literalinclude:: Tests/SimpleFactoryTest.php :language: php :linenos: