Déclaration des fonctions

Eléphant du PHP | 171 Messages

29 juin 2011, 17:03

Salut à tous,

Je me rend compte d'un problème avec les déclarations de fonctions et je voudrais savoir si il existait un moyen simple de le résoudre.
Je vous explique, je developpe un petit projet personnel : un calendrier communautaire. J'ai donc un fichier PHP dans ce projet qui contient toutes mes fonctions.

A coté j'ai mon blog totalement indépendant de ce calendrier qui possède lui aussi son fichier de fonctions. Mon projet de calendrier est terminé, donc pour mes tests j'essaye d'intégrer mon calendrier sur mon blog, mais dans le fichier de fonction de mon blog et celui du calendrier j'utilise un même nom de fonction, ce qui provoque une erreur puisque je redéclare la fonction lors de l'inclusion du calendrier.

Je pourrais tout simplement commenté la fonction dans le fichier de fonctions du calendrier, mais je voudrais savoir si il y a pas un moyen autonome de le faire. Parce que ce calendrier s'adressera aussi à des gens souhaitant simplement installer un calendrier sur leur site, et ne possédant peut être pas des connaissances en programmation. Et puis, je veux que lors de l'installation, l'utilisateur est juste à cliqué ou a copié une ligne dans sa page d'index. Et pas qui se retrouve avec une erreur, et qu'il se dise : "Pff, calendrier bidon, je change...".

De plus, moi dans mon cas c'est la même fonction mais si dans le cas de l'utilisateur c'est le même nom mais pas la même chose là ca coince.

Donc voilà, comment faire ? :) Est ce possible ? Ou non, faudra faire avec (je peux aussi tout à faire renommer toutes mes fonctions et les faire commencer par le nom de mon projet genre : function myprojet_connectDB(). J'attend vos réponses :wink:
Le bon jugement s'apprend par l'expérience qui s'acquiert en partie par le mauvais jugement.

ViPHP
xTG
ViPHP | 7331 Messages

30 juin 2011, 08:00

Une solution fiable et solide : transformer ton fichier de fonction en une class et lui attribuer un namespace. :)

Eléphant du PHP | 171 Messages

30 juin 2011, 10:53

Ok, je suis en train d'y regarder de plus près et je vois qu'il y a plusieurs approches. Peux tu me montrer de quelle manière tu y procéderai ? Si je dois renommer mon fichier de fonction en class je dois atteindre toutes mes fonction comme des méthodes et donc y changer dans mon code la manière dont j'appelle mes fonction ? Mais enfin la çà reviendrait à utiliser de la POO ? Ou est ce bien plus simple ?

Pour l'instant voilà ce que j'ai fait :

Mon fichier de fonction, au tout début, j'ai rajouté : namespace myproject;
Ensuite dans mon fichier config.inc.php qui inclut tous mes fichiers dont j'ai besoin : j'ai mis au tout début avant l'inclusion : namespace myproject.
Puis après j'ai commencé pour tester à mettre myproject\ devant ma fonction ce qui donne myproject\mafonction() quand je l'appelle. Pour l'instant ça marche. La façon que tu me décris avec la classe comment ferais tu ? J'ai commencé un peu la POO donc je comprendrai de quoi tu me parles mais je ne l'utilise pas encore dans mes projets.

Il y a t'il encore plus propre pour utiliser la namespace où je n'aurai même pas besoin de rajouter le namespace devant la fonction ? c'est peut être la méthode dont tu me parles avec la classe, mais je vois pas comment faire ? :o
Le bon jugement s'apprend par l'expérience qui s'acquiert en partie par le mauvais jugement.

ViPHP
xTG
ViPHP | 7331 Messages

30 juin 2011, 11:30

Ah je suis pas très familier avec les namespaces je pensais que c'était une technologie uniquement POO.
Si cela fonctionne pour un simple fichier de fonctions t'as pas à aller plus loin. :D

Eléphant du PHP | 171 Messages

30 juin 2011, 11:59

Okay ça marche merci.
Le bon jugement s'apprend par l'expérience qui s'acquiert en partie par le mauvais jugement.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 juin 2011, 13:20

le namespace à l'aire bien utilisé, c'est une bonne méthode pour ne pas être emmerdé, sinon le namspace à "l'ancienne" tu préfixe tes fonctions avec le nom de ton projet.

Par exemple myprojetc_mafonctionquirox($avec,$ces,$arguments);

@+
Il en faut peu pour être heureux ......