[RESOLU] polymorphysme et héritage

Petit nouveau ! | 5 Messages

14 août 2015, 14:17

Bonjour, mon but est simple et je ne sais pas si c'est possible en php5 :

Classe Véhicule et classe Voiture extends Véhicule et classe Bus extends Véhicule

fonction getvehicule($id)
{
Si c'est un id de voiture :
manipulation SQL
return new Voiture (...);
Sinon
manipulation SQL
return new Bus (...);

}

$object = getVehicule ($unIdVoiture);
var_dump( $object instanceOf Voiture); => j'aimerai true
var_dump( $object instanceOf Bus); => j'aimerai false
$object = getVehicule($unIdBus);
var_dump( $object instanceOf Voiture); => j'aimerai false
var_dump( $object instanceOf Bus); => j'aimerai true;

J'espère que mon problème est clair :) Cordialement
Bathepn

Eléphanteau du PHP | 42 Messages

14 août 2015, 17:53

Bonjour,

ton problème n'est pas clair.

Que cherche tu à faire?

Petit nouveau ! | 5 Messages

17 août 2015, 08:23

une fonction peut-elle renvoyer deux type différent ? ici elle renvoie soit une Voiture soit un Bus ?

Petit nouveau ! | 5 Messages

17 août 2015, 08:40

Autre question aussi dans le même genre :

class Contact ...
class Personne extends Contact....
class Societe extends Contact ...
function addContact ($contact) 
{
if (var_dump( $contact instanceOf Contact)
{ ... }
else if ( var_dump( $contact instanceOf Personne)
{ ... }
else if ( var_dump( $contact instanceOf Societe)
{ ... }

}
C'est possible un truc comme ça ?

ViPHP
xTG
ViPHP | 7331 Messages

17 août 2015, 13:34

Bonjour, mon but est simple et je ne sais pas si c'est possible en php5 :

Classe Véhicule et classe Voiture extends Véhicule et classe Bus extends Véhicule

fonction getvehicule($id)
{
Si c'est un id de voiture :
manipulation SQL
return new Voiture (...);
Sinon
manipulation SQL
return new Bus (...);

}

$object = getVehicule ($unIdVoiture);
var_dump( $object instanceOf Voiture); => j'aimerai true
var_dump( $object instanceOf Bus); => j'aimerai false
$object = getVehicule($unIdBus);
var_dump( $object instanceOf Voiture); => j'aimerai false
var_dump( $object instanceOf Bus); => j'aimerai true;

J'espère que mon problème est clair :) Cordialement
Bathepn
As-tu essayé ? Car oui cela fonctionne.
Un Bus est enfant de Vehicule mais n'a aucune relation avec une Voiture. Et inversement.

ViPHP
xTG
ViPHP | 7331 Messages

17 août 2015, 13:35

Autre question aussi dans le même genre :

class Contact ...
class Personne extends Contact....
class Societe extends Contact ...
function addContact ($contact) 
{
if (var_dump( $contact instanceOf Contact)
{ ... }
else if ( var_dump( $contact instanceOf Personne)
{ ... }
else if ( var_dump( $contact instanceOf Societe)
{ ... }

}
C'est possible un truc comme ça ?
Il faut envoyer le var_dump qui n'a absolument rien à faire là.
if( $contact instanceOf Contact)
{
   ...
}

Petit nouveau ! | 5 Messages

17 août 2015, 14:37

non je n'ai pas essayer car ce n'est pas à moi de le développer, je fais juste le CDC et la conceptionµ.

ok donc une fonction php peut renvoyer n'importe quoi en fait ? elle peux dans la même fonction avoir des if pour retourner un entier, un floatant, tout type d'objet. Ai-je bien compris ? J' n'ai pas l'habitude du php objet :)

Pour le second message, ok donc ça marche ce principe, merci

ViPHP
xTG
ViPHP | 7331 Messages

17 août 2015, 15:55

Tu fais la conception sans connaître le langage cible (et c'est pas qu'un problème de programmation objet mais aussi de langage vu tes remarques) ? C'est vachement dangereux ça...
C'est comme si un peintre allait faire la conception d'un moteur de centrale nucléaire. (j'image au pire mais ça donne l'idée du résultat)

PHP est très souple et permet de renvoyer au sein d'une même fonction n'importe quel type ou objet, car c'est un langage peu typé.
La seule limite est le constructeur d'un objet il me semble, qui ne pourra renvoyer que l'objet de la class.

N'hésites pas à revenir nous poser des questions si tu as un doute. :)
Car sinon je plains les pauvres développeurs qui vont devoir mettre en place ça.

Petit nouveau ! | 5 Messages

18 août 2015, 08:41

Merci c'est totalement ce qu'il me fallait.

Je connais php normal et les langage orienté objet tel que C# et C++ juste je n'ai jamais fait de php vraiment objet donc je ne connais pas vraiment ses limites mais je connais le langage

oui faire une conception sur un langage inconnu serai très dangereux en effet :) merci !