Créer une fonction "require"

Résolu/Fermé
chabinot Messages postés 322 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 27 août 2024 - 30 juin 2018 à 09:25
chabinot Messages postés 322 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 27 août 2024 - 1 juil. 2018 à 11:32
Bonjour,

J'ai une liste de fichiers php comme suit:
require_once __DIR__ . '/menu.php';
require_once __DIR__ . '/audio.php';
require_once __DIR__ . '/audios.php';
require_once __DIR__ . '/diapo.php';
require_once __DIR__ . '/videos.php';

J'ai créé une fonction:
function getFile($file) {
       return require_once __DIR__ . '/' . $file . '.php';
}

J'ai essayé cette solution, mais apparemment elle ne marche pas.

Merci de votre aide
Cordialement
A voir également:

2 réponses

Utilisateur anonyme
30 juin 2018 à 10:10
Bonjour

require_once est une instruction, et une fonction ne peut pas retourner une instruction.
Par contre, elle peut l'exécuter :

function getFile($file) {
       require_once __DIR__ . '/' . $file . '.php';
}
getFile('menu');
...
1
chabinot Messages postés 322 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 27 août 2024 16
30 juin 2018 à 15:59
Merci,
Hélas, cela ne fonctionne pas, j'ai dû me rabattre sur :
$files = ['menu', 'audio', 'audios', 'diapo', 'videos'];
foreach ($files as $file) {   
   $file .= '.php';
   require_once __DIR__ . '/' . $file;
}

Mais j'aimerais avoir une fonction qui me fait la même chose avec le paramètre $file ('menu') par exemple.
0
Utilisateur anonyme
Modifié le 30 juin 2018 à 22:24
Mais si, ça marche. Peux-tu montrer le code tel que tu l'as essayé ?
0
chabinot Messages postés 322 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 27 août 2024 16
1 juil. 2018 à 08:00
Dans menu.php, j'ai un tableau :
<?php
$jeu = [
  '<a href="http://www.lci.fr/jeux/mots-fleches/" target="_blank">Métro - Fléchés</a>',
  '<a href="http://www.20minutes.fr/services/mots-fleches" target="_blank">20 Min - Fléchés</a>',
  '<a href="http://www.lci.fr/jeux/mots-croises/" target="_blank">Métro - Croisés</a>',
  '<a href="http://www.20minutes.fr/services/mots-croises" target="_blank">20 Min - Croisés</a>',
  '<a href="http://www.20minutes.fr/services/ifleches" target="_blank">20 Min - <span class="min">i</span>Fléchés</a>',
  '<a href="http://www.20minutes.fr/services/ironde-des-mots" target="_blank">20 Min - <span class="min">i</span>Ronde</a>',
  '<a href="http://www.lci.fr/jeux/puzzle/" target="_blank">Métro - Puzzle</a>',
  '<a href="http://www.20minutes.fr/services/mots-coupes" target="_blank">20 Min - mots coupés</a>',
];

lorsque j'exécute le code
$files = ['menu', 'audio', 'audios', 'diapo', 'videos'];
foreach ($files as $file) {   
   $file .= '.php';
   require_once __DIR__ . '/' . $file;
}

puis je fais un :
var_dump($jeu);

J'ai le bon résultat, mais lorsque je passe la commande :
getFile('menu');
var_dump($jeu);

Il me retourne :
"Notice: Undefined variable: jeu in D:\serveur\www\amaury\bootstrap.php on line 13
NULL"
La différence est là.
Merci de me dire où je me suis trompé
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556 > chabinot Messages postés 322 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 27 août 2024
1 juil. 2018 à 10:05
bonjour, as-tu déclaré quelque part $jeu comme variable globale? sinon, il me semble normal qu'elle ne soit utilisable que dans la fonction getFile.
0
chabinot Messages postés 322 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 27 août 2024 16
1 juil. 2018 à 10:23
Non,
Comment déclarer une variable globale ?
Car, j'ai plusieurs tableaux dans plusieurs fichiers php.
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556
1 juil. 2018 à 10:31
par exemple en ajoutant
global $jeu;
dans menu.php.
0
chabinot Messages postés 322 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 27 août 2024 16
1 juil. 2018 à 11:32
Merci beaucoup,
Cela marche maintenant.
Je mets le sujet en résolu
0