The good point over the SimpleFactory is you can subclass it to implement different ways to create objects
For simple case, this abstract class could be just an interface
This pattern is a "real" Design Pattern because it achieves the "Dependency Inversion Principle" a.k.a the "D" in S.O.L.I.D principles.
It means the FactoryMethod class depends on abstractions, not concrete classes. This is the real trick compared to SimpleFactory or StaticFactory.
You can also find these code on GitHub
FactoryMethod.php
FactoryMethod.php
ItalianFactory.php
ItalianFactory.php
GermanFactory.php
GermanFactory.php
VehicleInterface.php
VehicleInterface.php
Porsche.php
Porsche.php
Bicycle.php
Bicycle.php
Ferrari.php
Ferrari.php
Tests/FactoryMethodTest.php
Tests/FactoryMethodTest.php