Question sur les classe PHP
nickleus
Messages postés
384
Statut
Membre
-
Dalida Messages postés 7114 Date d'inscription Statut Contributeur Dernière intervention -
Dalida Messages postés 7114 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Il arrive de temps en temps que je vois ceci dans de code de class :
class ma_class
{
funtion test (autre_class $request )
{
// code
}
}
Est ce que quelqu'un serait m'expliquer à quoi cela pourrait servir ?
merci beaucoup d'avance.
--
Il n'y a pas de problèmes, il n'y a que des solutions
Il arrive de temps en temps que je vois ceci dans de code de class :
class ma_class
{
funtion test (autre_class $request )
{
// code
}
}
Est ce que quelqu'un serait m'expliquer à quoi cela pourrait servir ?
merci beaucoup d'avance.
--
Il n'y a pas de problèmes, il n'y a que des solutions
Configuration: vista Firefox
7 réponses
-
Bonjour,
C'est un cast sur le fait que le paramètre fourni lors de l'appel de la fonction test doit être un objet de la classe 'autre_classe'.
Tout comme on aurait pu mettre int, float, string,... -
Ok c'est déjà plus claire. Merci.
Ça pourrais par exemple permettre de faire fonctionner un objet passé en paramètre suivant une interface. C'est ça ?
Et ainsi test si l'objet utilise bien toutes mes méthode ?
-
salut,
Ça pourrais par exemple permettre de faire fonctionner un objet passé en paramètre suivant une interface. C'est ça ?
qu'est-ce que tu veux dire ?
la méthode "test" de ta classe "ma_classe" n'admet comme paramètre qu'un objet du type "autre_class".
ça te permet d'être sûr de la variable que tu reçois à l'appelle de la méthode.
part exemple si je crée une classe qui traite des exceptions pour les afficher :<?php class classe_qui_affiche_l_erreur { public function affiche($e) { echo $e->getMessage(); // l'erreur sera levée ici } } // si tu fais : $obj = new classe_qui_affiche_l_erreur(); $param = array(); $obj->affiche($param); ?>
si tu appelles la méthode de la première classe en lui passant autre chose qu'une exception, tu auras une erreur car la variable en paramètre n'aura pas de méthode "getMessage()".<code><?php class classe_qui_affiche_l_erreur_avec_type { public function affiche(Exception $e) { echo $e->getMessage(); } } // si tu fais : $obj = new classe_qui_affiche_l_erreur_avec_type(); $param = array(); $obj->affiche($param); // l'erreur sera levée ici ?></code>
avec la deuxième classe, tu auras aussi une erreur car tu donnes un paramètre incorrect mais l'erreur sera levée à l'extérieur de ta classe et tu es sûr que ta fonction ne sera pas exécutée, même partiellement.
-
Ça pourrais par exemple permettre de faire fonctionner un objet passé en paramètre suivant une interface. C'est ça ?
qu'est-ce que tu veux dire ?
Voila un petit code que j'ai fait en croyant que c'était puisqu'il fonctionne car un exemple va meiux représenté ce que je voulais dire :interface Core_Inter { public function bibi ( ); }
class Core_Test1 { public function testing ( Core_Inter $p ) { $p->bibi ( ); } }
class Core_Test2 implements Core_Inter { public function bibi ( ) { echo 'bibi'; } }
$class = new Core_Test2; $class2 = new Core_Test1; $class2->testing ( $class );
Est ce que tu vois ce que je veux dire ? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
ah !
et ça fonctionne ?
je pense qu'il faut plutôt hérité d'une de la classe "Core_Inter" que d'implémenter l'interface.
il teste le type et ta "Core_Test2" doit toujours être du type "objet standard" et pas du type "Core_Inter".
-
Oui en faite je pense que c'est un coup de bol si ça fonctionne.
Quoi que ... en lisant un tuto sur le design pattern observateurs ( car je suis entrain d'essayer de comprend), il font appel appel à l'interface.
Voila le lien :
http://julien-pauli.developpez.com/tutoriels/php/observer-spl/
tu vois ? -
non tu as raison ça fonctionne avec une interface !