IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonction hérite d'une fonction


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 69
    Points : 46
    Points
    46
    Par défaut Fonction hérite d'une fonction
    Bonjour à tous,

    J'ai un dossier "system" avec des fonctions php plutot générique.
    Ex de fichier : date.php qui permet d'afficher des dates au format EN ou FR.

    J'ai également un dossier "application" avec des fonctions php.
    J'aimerais bien que la fonction date de mon dossier "application" hérite de la fonction date de mon dossier "system"
    pour ne pas modifier la fonction date de mon dossier "system" mais que je puisse (selon les projets) mettre à jour la fonction date du dossier "application".

    J'espère avoir été clair dans mes explications...
    Merci de votre aide

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    L'héritage de fonction n'existe pas. Tu peux par contre encapsuler une fonction dans une autre, par exemple en utilisant une fonction A à l'intérieur d'une autre fonction B, et modifier ensuite la valeur retournée.

    Si tu peux donner un exemple précis de fonctionnalité que tu souhaites accomplir, on pourra te donner une réponse plus précise. Le cas que tu donne ne marchera de toute façons pas, puisque tu ne peux pas redéclarer la fonction globale date() (mais tu peux l'utiliser dans un namespace).

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    Ok voici par exemple une fonction A

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function setPasswordCrypt($string=""){
    $newPassword = "";
    if($string != ""){
    		$newPassword = $string;
    		}else{
    			$string = 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy1234567890';
    			$shuffle = str_shuffle($string);
    			$newPassword = substr($shuffle, 0, $lenght);
    		}
    		$newPasswordHash = password_hash($newPassword, PASSWORD_BCRYPT);
    		if(!$newPasswordHash){
    			return false;
    		}else{
    			return ["password"=>$newPassword, "passwordHash"=>$newPasswordHash];
    		}
    	}
    et imaginons une fonction B qui "hériterais" (oui je sais c'est pas possible mais j'ai pas trouvé un autre terme) de la fonction A avec par exemple en 2e parametre une longueur de 6 caractères

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function setPasswordCrypt($string="", 6){
    ...
    }

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 30
    Points : 39
    Points
    39
    Par défaut
    Si je comprends bien ce que tu demandes, tu ne peux faire par définition, que le miroir du fonctionnement d'une surcharge de fonction.

    Autrement dit tu as deux fonctions, ou plus, avec une signature différente, qui ont plus ou moins le même code.

    Après, si ta fonction dans le dossier application effectue des opérations qui ne font qu'impacter le résultat final de la fonction présente dans le dossier system, tu as juste à faire appel à la fonction system dans la fonction application puis à effectuer les modifications.

    Enfin en somme je ne vois pas le problème, ce ne sont que des fonctions, qu'elles effectuent des opérations potentiellement proches n'y changeant pas grand chose.

    Lorsqu'une fonction peut opérer sur la sortie d'une autre, tu le fais, sinon tu implémentes depuis 0.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    ok merci pour vos réponses

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Ah oui. Non, tu ne peux pas redéclarer une fonction (même nom de fonction et différente signature).

    Tu dois utiliser des noms différents, ou si tu veux vraiment avoir le même nom, tu peux
    - Utiliser des valeurs par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function setPasswordCrypt($string, $length = 6)
    - utiliser un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function setPasswordCrypt($string, $options) {
      if(!empty($options['length']) {
        $length = $options['length'];
      }
    }
    Utiliser un variadic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    function setPasswordCrypt($string, ...$options)
    etc...

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/11/2007, 14h46
  2. Réponses: 1
    Dernier message: 25/10/2007, 21h25
  3. Appel d'une fonction A depuis une fonction B.
    Par LeFlou dans le forum C++
    Réponses: 9
    Dernier message: 22/05/2007, 17h36
  4. [VBA-E] Une fonction Excel dans une fonction VBA
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/07/2006, 10h21
  5. Passer une fonction comme argument à une fonction
    Par Cocotier974 dans le forum Général Python
    Réponses: 4
    Dernier message: 29/06/2004, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo