[PHP 7] Typage d'un paramètre d'une fonction

Résolu/Fermé
patrice86 Messages postés 1377 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 9 septembre 2022 - Modifié par patrice86 le 4/11/2016 à 09:59
patrice86 Messages postés 1377 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 9 septembre 2022 - 7 nov. 2016 à 08:56
Bonjour,

Je développe une application sous Zend Framework et celle-ci est découpée en plusieurs modules.
Je souhaite créer une interface dans un module Elastic et une des méthodes doit prendre en paramètre une des classes présentes dans un dossier d'un autre module Pim

<?php

namespace Elastic\Model;

/**
 * Interface Indexes
 * @package Elastic\Model
 */
interface Indexes
{
    [....]
    
    /**
     * @return mixed
     */
    public function addElasticStatement(Pim\Entity\*);

    [....]
}


Seulement, les classes qui "impléments" mon interface Indexes doivent pouvoir envoyer un paramètre de la fonction addElasticStatement une des classes présentes dans le dossier Pim\Entity\ :
- Pim\Entity\Article
- Pim\Entity\Categorie
- Pim\Entity\Product
....

En gros, la classe Elastic/Model/Article doit pouvoir envoyer comme paramètre de la méthode la classe Pim/Entity/Article.
La classe Elastic/Model/Product doit pouvoir envoyer comme paramètre de la méthode la classe Pim/Entity/Product.
etc, etc....

Une idée de comment typer le paramètre de façon "globale" ?
Merci

1 réponse

miramaze Messages postés 1429 Date d'inscription mercredi 29 juillet 2009 Statut Contributeur Dernière intervention 1 mai 2022 93
Modifié par miramaze le 4/11/2016 à 21:38
Salut,
je sais pas si je comprends correctement ce que tu veux faire, mais je dirais en implémentant une interface générique Entity puis ensuite en faisant en sorte que tes classes implémentes cette interface et enfin en typant ta méthode addElasticStatement avec cette interface générique.
0
patrice86 Messages postés 1377 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 9 septembre 2022 126
7 nov. 2016 à 08:56
Salut,

En effet c'est la bonne solution. J'avais oublié le typage par interface.
Merci :)
0