2010-08-08 5 views
2

La surcharge de fonction est-elle possible en php.Si oui, alors comment et si non alors pourquoi?Surcharge de fonction en php

Merci d'avance.

J'ai vérifié le manuel de php qui donne une solution à la surcharge car la fonction mail() peut être surchargée par la fonction mb_mail().

Mais est-ce la bonne façon pour la surcharge

+3

Qu'avez-vous l'intention d'accomplir en utilisant la surcharge de fonctions en PHP? – BoltClock

Répondre

3

Non. Parce qu'il n'a pas été implémenté. Il y a une extension PECL qui vous permet de faire cela, mais cela rend votre code non portable dans les environnements où cette extension n'est pas disponible.

Ne demandez pas pourquoi cela n'a pas été implémenté.

Depuis PHP 5.3, vous pouvez utiliser les espaces de noms pour « type de » surcharge

namespace MyNamespace; 

function mail() { 
    return \mail(); 
} 
1

Cela ne peut être fait à l'interne (via une extension de PHP), à moins que vous installez le PECL runkit extension, qui expose la fonctionnalité surcharge fonction à l'espace utilisateur. Cependant, vous ne voulez probablement pas utiliser runkit dans un environnement de production, il n'y a donc aucun moyen de le faire depuis l'espace utilisateur.

+0

À votre avis, comment implémenter une surcharge de fonction –

+0

@Ankur Pourquoi en avez-vous besoin? Tu ne peux pas juste envelopper la fonction dans une autre? – Artefacto

+0

@Ankur as-tu lu sa réponse? –

0

je suis nouveau à php .. donc ne sais pas sur ces extensions mentions ci-dessus .. mais récemment j'ai vu une méthode de surcharge fonction en php (sorte de) ..

la surcharge de fonction traditionnelle n'est pas supportée en php parce que vous ne pouvez pas avoir plusieurs fonctions avec le même nom en php .. mais vous pouvez utiliser une seule fonction qui peut prendre plusieurs arguments .. connu comme fonction variadique (http://en.wikipedia.org/wiki/Variadic_function)

function show() 
{ 
    $data = ""; 
    $arr = func_get_args();  //Returns an Array of arguments passed 

    for($a = 0 ; $a < func_num_args() ; $a++) // func_num_args returns number of arguments passed .. you can also use count($arr) here 
    { 
     $data .= $arr[$a]; 
    } 

    echo $data, "<br>"; 
} 

show("Hey","Hii","Hello"); 
show("How Are You"); 

ici .. J'ai passé des arguments variables à une fonction et joint chacun d'eux dans une chaîne ..
y compris ofcourse une chaîne n'est pas nécessaire .. vous pouvez tout simplement écho contenu du tableau arr $ dans une boucle .. J'espère que cela pourra aider .. !!