Bonjour,
Pour afficher differentes infos sur ma page, j'utilise une fonction dans
laquelle, j'utilise des variables globales déclarées.
Jusque là, tout fonctionne bien.
Le hic, c'est que je souhaiterai, dans cette fonction, appeller une autre
fonction pour effectuer un test.
Ma fonction n'est pas reconnue et je ne sais pas si je peux et comment il
est possible de la déclarer en fonction globale comme mes variables.
Voici un exemple de mon code.
function Mafonction ($param1,$param2) {
Global $Color1; Global $Color2; Global $Color3; Global $Color4; Global
$Color5;
TestSiImageExiste();
// ici le traitement de la fonction Mafonction
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
CrazyCat
Marie wrote:
function Mafonction ($param1,$param2) { Global $Color1; Global $Color2; Global $Color3; Global $Color4; Global $Color5; TestSiImageExiste(); // ici le traitement de la fonction Mafonction }
C'est étrange car une fonction, si elle est déclarée, est accessible de partout.
Tu peux utiliser function_exists('TestSiImageExiste') pour vérifier qu'elle est bien déclarée. Une erreur habituelle et fréquente est d'oublier d'appeler le fichier contenant les fonctions. Et si la fonction existe bien, essaye avec call_user_function('TestSiImageExiste', '')
-- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.c-p-f.net
Marie wrote:
function Mafonction ($param1,$param2) {
Global $Color1; Global $Color2; Global $Color3; Global $Color4; Global
$Color5;
TestSiImageExiste();
// ici le traitement de la fonction Mafonction
}
C'est étrange car une fonction, si elle est déclarée, est accessible de
partout.
Tu peux utiliser function_exists('TestSiImageExiste') pour vérifier
qu'elle est bien déclarée.
Une erreur habituelle et fréquente est d'oublier d'appeler le fichier
contenant les fonctions.
Et si la fonction existe bien, essaye avec
call_user_function('TestSiImageExiste', '')
--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.c-p-f.net
function Mafonction ($param1,$param2) { Global $Color1; Global $Color2; Global $Color3; Global $Color4; Global $Color5; TestSiImageExiste(); // ici le traitement de la fonction Mafonction }
C'est étrange car une fonction, si elle est déclarée, est accessible de partout.
Tu peux utiliser function_exists('TestSiImageExiste') pour vérifier qu'elle est bien déclarée. Une erreur habituelle et fréquente est d'oublier d'appeler le fichier contenant les fonctions. Et si la fonction existe bien, essaye avec call_user_function('TestSiImageExiste', '')
-- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.c-p-f.net
loufoque
Marie a dit le 22/03/2005 à 22:12:
function Mafonction ($param1,$param2) { Global $Color1; Global $Color2; Global $Color3; Global $Color4; Global $Color5;
On peut faire global $var1, $var2, ..., $varn; Ensuite, ce serait peut-être mieux d'avoir un tableau contenant directement toutes les couleurs, non ? Et puis personnellement, moi je préfere éviter les variables globales.
TestSiImageExiste(); Cette fonction doit avoir été déclarée dans le contexte global pour que
le code fonctionne.
Marie a dit le 22/03/2005 à 22:12:
function Mafonction ($param1,$param2) {
Global $Color1; Global $Color2; Global $Color3; Global $Color4; Global
$Color5;
On peut faire global $var1, $var2, ..., $varn;
Ensuite, ce serait peut-être mieux d'avoir un tableau contenant
directement toutes les couleurs, non ?
Et puis personnellement, moi je préfere éviter les variables globales.
TestSiImageExiste();
Cette fonction doit avoir été déclarée dans le contexte global pour que
function Mafonction ($param1,$param2) { Global $Color1; Global $Color2; Global $Color3; Global $Color4; Global $Color5;
On peut faire global $var1, $var2, ..., $varn; Ensuite, ce serait peut-être mieux d'avoir un tableau contenant directement toutes les couleurs, non ? Et puis personnellement, moi je préfere éviter les variables globales.
TestSiImageExiste(); Cette fonction doit avoir été déclarée dans le contexte global pour que
le code fonctionne.
Marc
function Mafonction ($param1,$param2) { Global $Color1; Global $Color2; Global $Color3; Global $Color4; Global $Color5; TestSiImageExiste(); // ici le traitement de la fonction Mafonction }
c'est tres simple, tu crees un fichier contenant tes fonctions communes par exemple : functions.php
puis dans chaque script tu fais un "include_once('fonctions.php');
il n'y a rien d'autre a faire. Voici en pratique ce que cela donnne :
fonctions.php: <?php
# a mon avis il devrait y avoir des parametres a cette fonction function TestSiImageExiste($file){ return false; }
?>
fichier ma_page.php: <?php
# indispensable pour eviter les erreurs triviales qui # sont indiquée automatiquement ; c'est un gage de qualité. error_reporting(E_ALL);
# attention au chemin d'acces (repertoires) include_once('fonctions.php');
function principale(){ # blabla # blabla # blabla
TestSiImageExiste();
# re-blabla # blabla # blabla
} ?>
function Mafonction ($param1,$param2) {
Global $Color1; Global $Color2; Global $Color3; Global $Color4; Global
$Color5;
TestSiImageExiste();
// ici le traitement de la fonction Mafonction
}
c'est tres simple, tu crees un fichier contenant tes fonctions communes
par exemple : functions.php
puis dans chaque script tu fais un "include_once('fonctions.php');
il n'y a rien d'autre a faire. Voici en pratique ce que cela donnne :
fonctions.php:
<?php
# a mon avis il devrait y avoir des parametres a cette fonction
function TestSiImageExiste($file){
return false;
}
?>
fichier ma_page.php:
<?php
# indispensable pour eviter les erreurs triviales qui
# sont indiquée automatiquement ; c'est un gage de qualité.
error_reporting(E_ALL);
# attention au chemin d'acces (repertoires)
include_once('fonctions.php');
function Mafonction ($param1,$param2) { Global $Color1; Global $Color2; Global $Color3; Global $Color4; Global $Color5; TestSiImageExiste(); // ici le traitement de la fonction Mafonction }
c'est tres simple, tu crees un fichier contenant tes fonctions communes par exemple : functions.php
puis dans chaque script tu fais un "include_once('fonctions.php');
il n'y a rien d'autre a faire. Voici en pratique ce que cela donnne :
fonctions.php: <?php
# a mon avis il devrait y avoir des parametres a cette fonction function TestSiImageExiste($file){ return false; }
?>
fichier ma_page.php: <?php
# indispensable pour eviter les erreurs triviales qui # sont indiquée automatiquement ; c'est un gage de qualité. error_reporting(E_ALL);
# attention au chemin d'acces (repertoires) include_once('fonctions.php');
function principale(){ # blabla # blabla # blabla
TestSiImageExiste();
# re-blabla # blabla # blabla
} ?>
loufoque
CrazyCat a dit le 23/03/2005 à 09:54:
C'est étrange car une fonction, si elle est déclarée, est accessible de partout.
Ben non.
function foo() { echo 'Foo'; function bar() { echo 'Bar'; } bar(); }
bar(); // erreur.
Par contre, si on appelle foo juste avant bar, ça marche. En fait c'est pas une histoire de contexte, mais d'évaluation de la déclaration.
CrazyCat a dit le 23/03/2005 à 09:54:
C'est étrange car une fonction, si elle est déclarée, est accessible de
partout.
Ben non.
function foo()
{
echo 'Foo';
function bar()
{
echo 'Bar';
}
bar();
}
bar(); // erreur.
Par contre, si on appelle foo juste avant bar, ça marche.
En fait c'est pas une histoire de contexte, mais d'évaluation de la
déclaration.
C'est étrange car une fonction, si elle est déclarée, est accessible de partout.
Ben non.
function foo() { echo 'Foo'; function bar() { echo 'Bar'; } bar(); }
bar(); // erreur.
Par contre, si on appelle foo juste avant bar, ça marche. En fait c'est pas une histoire de contexte, mais d'évaluation de la déclaration.
CrazyCat
loufoque wrote:
CrazyCat a dit le 23/03/2005 à 09:54:
C'est étrange car une fonction, si elle est déclarée, est accessible de partout. Ben non.
[Snip de l'aberration]
En fait c'est pas une histoire de contexte, mais d'évaluation de la déclaration.
Heu, pour quelle raison voudrais-tu définir une fonction dans une autre fonction? je n'en vois pas l'intérêt. A priori, une fonction se définit soit de manière globale, soit dans une classe (et donc, il faut instancier l'objet de la classe).
Il y a peut-être des cas particuliers, mais actuellement je ne vois pas du tout lesquels. -- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.c-p-f.net
loufoque wrote:
CrazyCat a dit le 23/03/2005 à 09:54:
C'est étrange car une fonction, si elle est déclarée, est accessible de
partout.
Ben non.
[Snip de l'aberration]
En fait c'est pas une histoire de contexte, mais d'évaluation de la
déclaration.
Heu, pour quelle raison voudrais-tu définir une fonction dans une autre
fonction? je n'en vois pas l'intérêt.
A priori, une fonction se définit soit de manière globale, soit dans une
classe (et donc, il faut instancier l'objet de la classe).
Il y a peut-être des cas particuliers, mais actuellement je ne vois pas
du tout lesquels.
--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.c-p-f.net
C'est étrange car une fonction, si elle est déclarée, est accessible de partout. Ben non.
[Snip de l'aberration]
En fait c'est pas une histoire de contexte, mais d'évaluation de la déclaration.
Heu, pour quelle raison voudrais-tu définir une fonction dans une autre fonction? je n'en vois pas l'intérêt. A priori, une fonction se définit soit de manière globale, soit dans une classe (et donc, il faut instancier l'objet de la classe).
Il y a peut-être des cas particuliers, mais actuellement je ne vois pas du tout lesquels. -- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.c-p-f.net
loufoque
CrazyCat a dit le 23/03/2005 à 13:30:
Heu, pour quelle raison voudrais-tu définir une fonction dans une autre fonction? je n'en vois pas l'intérêt.
Ça n'en a pas vraiment. Néanmoins c'est un mécanisme qui existe en C.
CrazyCat a dit le 23/03/2005 à 13:30:
Heu, pour quelle raison voudrais-tu définir une fonction dans une autre
fonction? je n'en vois pas l'intérêt.
Ça n'en a pas vraiment.
Néanmoins c'est un mécanisme qui existe en C.
Heu, pour quelle raison voudrais-tu définir une fonction dans une autre fonction? je n'en vois pas l'intérêt.
Ça n'en a pas vraiment. Néanmoins c'est un mécanisme qui existe en C.
dmetzler
des fois tu peux en avoir besoin pour par exemple dispatcher une fonction sur tout un tableau avec la commande array_map. Ca m'embete d'avoir à déclarer une fonction globale pour ça.
Mais souvent le problème c'est que ta fonction est appelée plusieurs fois et que du coup php essaye de redéclarer la fonction plusieurs fois et génère alors une erreur
des fois tu peux en avoir besoin pour par exemple dispatcher une
fonction sur tout un tableau avec la commande array_map. Ca m'embete
d'avoir à déclarer une fonction globale pour ça.
Mais souvent le problème c'est que ta fonction est appelée plusieurs
fois et que du coup php essaye de redéclarer la fonction plusieurs
fois et génère alors une erreur
des fois tu peux en avoir besoin pour par exemple dispatcher une fonction sur tout un tableau avec la commande array_map. Ca m'embete d'avoir à déclarer une fonction globale pour ça.
Mais souvent le problème c'est que ta fonction est appelée plusieurs fois et que du coup php essaye de redéclarer la fonction plusieurs fois et génère alors une erreur
Thierry Boudet
On 2005-03-23, loufoque wrote:
Heu, pour quelle raison voudrais-tu définir une fonction dans une autre fonction? je n'en vois pas l'intérêt.
Ça n'en a pas vraiment. Néanmoins c'est un mécanisme qui existe en C.
Non.
-- _/°< coin
On 2005-03-23, loufoque <mat.wilmots.remove@nospam.wanadoo.fr> wrote:
Heu, pour quelle raison voudrais-tu définir une fonction dans une autre
fonction? je n'en vois pas l'intérêt.
Ça n'en a pas vraiment.
Néanmoins c'est un mécanisme qui existe en C.