Car store implementation using abstract factory
use protected instead of private

by making $sports and $family protected you could just override them within the child classes without having to use parrent::__construct. 

interface vs abstract

why Interface for Car? It is not wrong or something but since you are asking for feedback i would recommend to use an abstract class for Car and extend it for implementations of car like Galaxy. You should ask yourself "what other object than specific cars would implement the interface "car" afaik no one. 

But if you would have an Interface like ABS you could ask questions like "does instance of car implement ABS" which sounds more like the real world you are trying to model

separation of sport &amp;&amp; family cars

i dont know why you separate them like this, it looks like you could simplify the code a lot without this kind of separation. 

my simplified take:

    &lt;?php
namespace Car {

    abstract class Car
    {
    }

    class Shop
    {
        private $factory;

        public function __construct(\Car\Factory\Factory $factory)
        {
            $this-&gt;factory = $factory;
        }

        public function orderCar($name)
        {
            return $this-&gt;factory-&gt;makeCar($name);
        }
    }



abstract class Ford extends Car {}
class Mustang extends Ford {}

}
namespace Car\Factory{
abstract class Factory {

    protected $cars = array();
    abstract public function makeCar($name);
}

class Ford extends \Car\Factory\Factory {

    protected $cars = array("Mustang" =&gt; '\Car\Mustang');
    public function makeCar($name) {
        if (!isset($this-&gt;cars[$name])) {
            throw new \InvalidArgumentException(sprintf("%s %s \n", "invalid car name", $name));
        }

        return new $this-&gt;cars[$name];
    }

}
}
namespace App {

use Car\Factory\Ford as FordFactory;
use Car\Shop;

try {
    $fac = new FordFactory();
    $shop = new Shop($fac);
    $car = $shop-&gt;orderCar('Mustang');
    var_dump($car);

    if ($car instanceof \Car\Ford) {
        echo "real deal \n";
    }
} catch (\Exception $e) {
    print_r($e-&gt;getMessage());
}
}