40 votes

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

Quand je l'utilise :

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

L'avertissement est le suivant : "Impossible d'ouvrir le flux : Aucune erreur dans C:\xampp\htdocs\4ajax\gallery_core.php sur 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'omets le '?page=$page_no part' de l'argument de la fonction require, alors aucune erreur ou avertissement n'est affiché.

Je dois passer la variable lorsque j'utilise la fonction require().

74voto

Pascal MARTIN Points 195780

require() y include() ouvriront le fichier correspondant au chemin/nom qu'ils reçoivent.

Ce qui signifie que, avec votre code, vous devriez avoir un fichier appelé diggstyle_code.php?page=1 sur votre disque. Ce n'est évidemment pas le cas, et cela échoue donc.

En citant le Portée variable de la page du manuel PHP :

La portée d'une variable est le contexte dans lequel elle est définie. En général, toutes les variables PHP n'ont qu'une seule portée. Cette portée unique couvre également les fichiers inclus et requis.

Dans votre cas, vous n'avez pas besoin de passer la variable. Si vous avez une variable dans votre script actuel, elle existera aussi dans le script que vous incluez, en dehors des fonctions, qui ont leur propre portée .

Dans votre script principal, vous devriez avoir :

$page_no = 10;
require 'diggstyle_code.php';

Et dans diggstyle_code.php :

echo $page_no;
// Or work with $page_no the way you have to

Rappelez-vous que l'inclusion/la demande d'un fichier est exactement la même chose que le copier-coller de son contenu à la ligne où il est demandé.

9voto

knittl Points 64110

Ça devrait marcher, mais c'est un peu un sale boulot :

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

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

3voto

Blagovest Buyukliev Points 22767

require ne tire pas le fichier du serveur web - il devrait plutôt faire référence à un fichier du système de fichiers.

Appel à include o 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 et qui ne figure pas dans ce fil de discussion. Vous pouvez renvoyer une fonction du fichier requis qui accepte les arguments que vous voulez transmettre :

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

Et appelez-le avec les arguments lorsque vous require il :

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

// or:

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

1voto

stephane k. Points 645

Si votre variable est globale, il n'est pas nécessaire de la "passer", elle est déjà là : Portée des variables PHP .

La réponse est alors, ne faites rien, si $page_no existe dans le fichier dans lequel vous appelez require(), il sera disponible dans le fichier inclus.

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