PHP Interface et Résumé des meilleures pratiques de classe pour l'héritage?

Lors de la définition de la structure et d'hériter de l'Interface et/ou Classe Abstraite, laquelle est la meilleure pratique? Et pourquoi? Voici 2 exemples:

Voici l'exemple pour [Interface] -> [Résumé] -> [Classe]

Interface DataInterface
{
    public function __construct($connection);
    public function connected();
    public function get();
}

Abstract class BaseData implements DataInterface
{
    protected $connection;

    public function __construct($connection)
    {
        $this->connection = $connection;
    }
}


class UserData extends BaseData
{
    public function exists()
    {
        return is_connected($this->connection);
    }

    public function get()
    {
        return get_data($this->connection);
    }
}

$oUserData = new UserData(new Connection());

Et voici l'exemple pour [Résumé] -> [Classe] sans l'Interface

Abstract class BaseData
{
    protected $connection;

    public function __construct($connection)
    {
        $this->connection = $connection;
    }

    abstract public function connected();
    abstract public function get();
}

class UserData extends BaseData
{
    public function exists()
    {
        return is_connected($this->connection);
    }

    public function get()
    {
        return get_data($this->connection);
    }
}

$oUserData = new UserData(new Connection());

Je suis en train de créer une petite application (peut grossir) et confus sur la façon de mettre en œuvre dans le début correctement.

Par ailleurs, c'est cette déclaration de __construct() avec le paramètre a de sens que dans l'Interface?

public function __construct($connection);

source d'informationauteur user702300 | 2013-12-06