Gérer les interfaces avec PHP5

Petit nouveau ! | 2 Messages

03 janv. 2006, 23:21

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.

Mammouth du PHP | 19672 Messages

03 janv. 2006, 23:35

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1311 Messages

04 janv. 2006, 12:37

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 :?:

Eléphant du PHP | 219 Messages

04 janv. 2006, 13:00

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";
  }

}

Mammouth du PHP | 1311 Messages

04 janv. 2006, 15:28

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