40 votes

comment passer une variable via la fonction require() ou include() de php ?

quand j'utilise ça :

 require("diggstyle_code.php?page=$page_no");

l'avertissement est : failed to open stream : aucune erreur dans C:\xampp\htdocs\4ajax\gallery_core.php à la ligne 198

et l'erreur est :

 Failed opening required 'diggstyle_code.php?page=1' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\4ajax\gallery_core.php on line 198

valeur de la variable $page_no est collectée au préalable.

Mais si j'omet le '?page=$page_no part' de l'argument de la fonction require, aucune erreur ou avertissement n'est affiché.

J'ai besoin de passer la variable lorsque j'utilise la fonction require().

9voto

knittl Points 64110

cela devrait fonctionner, mais c'est un hack assez sale :

 $_GET['page'] = $page_no;
require('diggstyle_code.php');

vous voulez probablement refactoriser votre code pour utiliser des fonctions et/ou des objets et les appeler depuis vos fichiers au lieu de les inclure (alerte code spaghetti)

3voto

Blagovest Buyukliev Points 22767

require n'extrait pas le fichier du serveur Web - il doit plutôt faire référence à un fichier sur le système de fichiers.

Appeler include ou require indique simplement à PHP de coller le contenu du fichier donné dans votre code à cet endroit, rien de plus.

3voto

Marty Points 22040

Bien que cette question soit ancienne, il existe une autre option que j'utilise qui manque dans ce fil. Vous pouvez renvoyer une fonction du fichier requis qui accepte les arguments que vous souhaitez transmettre :

 return function(array $something) {
    print_r($something);
}

Et appelez-le avec les arguments lorsque vous require :

 require('file.php')(['some', 'data']);

// or:

$context = require('file.php');
$context(['some', 'data']);

1voto

linepogl Points 5110

require() ne fait pas d'appel HTTP. Tout ce qu'il fait est d'ouvrir le fichier à partir du disque et d'inclure le code dans la position de l'appel. Des variables locales simples suffisent donc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X