Do you understand the purpose of object inheritance?
Simply, the idea is that when two objects have similar attributes and methods, rather than declare the attributes and methods twice, you can use inheritance - DRY - Don't Repeat Yourself.
From the example you have provided, I cannot see why an Item object would extend a Shop object. Instead, an Item should probably belong to a Shop.
Anyway, I'm not going to get into debating the architecture of your application. That is something you can consider yourself.
Usually when using inheritance, if the child class had it's own constructor, you would call the parent constructor from within the child constructor. E.g.
class Item extends Shop {
protected $_itemId;
public function __construct($itemId = 0, $location = '') {
$this->_itemId = $itemId;
parent::__construct($location);
}
} If you don't want to do that, then another option would be to implement the decorator design pattern .
R.