Page 1 sur 1

Gérer les interfaces avec PHP5

Posté : 03 janv. 2006, 23:21
par BillGates12345
Bonjour à tous,

je voudrais gérer les interfaces avec PHP.
Voici le code que j'aimerais faire :
interface iValidationEnvoi
{
  public function Envoi();
}

class Lettre implements iValidationEnvoi
{
  public function Envoi()
  {
    echo "Lettre";
  }

}

class Colis implements iValidationEnvoi
{
  public function Envoi()
  {
    echo "Colis";
  }
}

$envoiLettre = new iValidationEnvoi;
$envoiLettre->Envoi();
j'aimerais faire affiché Colis et Lettre car un interface me permet d'exécuter le code dans les classes qui sont implémentés.

pouvez-vous me dire comment faire ?

merci pour votre aide.

Posté : 03 janv. 2006, 23:35
par Cyrano
On ne peut pas instancier une interface, En revanche, une petite recherche sur => :google: <= à propos du polymorphisme pourrait te permettre d'envisager l'instaciation de la classe appropriée

Posté : 04 janv. 2006, 12:37
par jeff
et comme ca
$envoiLettre = new lettre();
$envoiLettre->Envoi();
$envoiColis= new colis();
$envoiColis->Envoi();
maintenat je suis pas sur que les interfaces correspondent le mieux a ta demande, peut etre une class abstraite searit mieux :?:

Posté : 04 janv. 2006, 13:00
par daoud
comme le dit jeff tu peux envisager une autre solution. Selon moi :
abstract class ValidationEnvoi
{
  protected $type;

  public function Envoi(){
     echo $this->type;
  }
}

class Lettre extends ValidationEnvoi
{
  function __construct()
  {
    $this->type = "Lettre";
  }

}

class Colis extends ValidationEnvoi
{
  function __construct()
  {
    $this->type = "Colis";
  }

}

Posté : 04 janv. 2006, 15:28
par jeff
ou
abstract class ValidationEnvoi
{
  protected $type;

  abstract protected function Envoi();
}

class Lettre extends ValidationEnvoi
{
  public function Envoi()
  {
    $this->type = "Lettre";
  }

}

class Colis extends ValidationEnvoi
{
  public function _Envoi()
  {
    $this->type = "Colis";
  }

}
mais apres c'est selon tes objets