2009-09-30 9 views
1

J'écris un peu du code et je script parent php qui inclut() et comprend un second scénario, voici l'extrait de mon second code:

echo ($GLOBALS['key($_REQUEST)']);

I « m essayer de saisir une clé ($ _ REQUEST) du parent et de l'utiliser chez l'enfant, mais cela ne fonctionne pas ..

c'est quand j'exécuter le script en ligne de commande:

 
mbp:digaweb alexus$ php findItemsByKeywords.php test 
PHP Notice: Undefined index: key($_REQUEST) in /Users/alexus/workspace/digaweb/findItemsByKeywords.php on line 3 
PHP Stack trace: 
PHP 1. {main}() /Users/alexus/workspace/digaweb/findItemsByKeywords.php:0 
mbp:digaweb alexus$ 

i entendu dire que GLOBALS est déconseillés façon aussi, mais je ne sais pas peut-être est ok ...

+0

L'alternative serait probablement de définir une fonction/classe dans le script inclus et de l'appeler/créer une instance dans le script inclus. – outis

+0

pouvez-vous peut-être répondre à cette question avec quelques exemples, je ne suis pas vraiment ce que vous dites .. – alexus

Répondre

-1
echo $_GLOBALS[key($_REQUEST)]; 

Vous avez juste besoin d'enlever les guillemets simples. Il cherchait la clé littérale 'key ($ _ REQUEST)', qui n'existe évidemment pas.

Tout dépend de ce que vous essayez de faire ... qu'est-ce que vous essayez de faire?

+0

quand j'ai essayé votre exemple, je reçois: PHP Avis: Variable indéfinie: _GLOBALS, ce que je suis en train de faire est pour passer cette clé ($ _ REQUEST) à mon script enfant que j'ai appelé include(), je dois passer quelque chose à ce script script parent – alexus

0

Basé sur votre commentaire à mon autre réponse, je pense que je comprends ce que vous essayez de faire. Vous essayez simplement de passer une variable d'un script à un autre script inclus.

Tant que vous définissez une variable avant d'inclure le script, vous pouvez l'utiliser dans le script inclus. Par exemple:

// script1.php 
$foo = 'bar'; 
include_once('script2.php'); 

// script2.php 
echo $foo; // prints "bar" 
+0

je vais essayer, mais pour l'instant et je ne sais pas si c'est bonne pratique, je l'ai fait en faisant mon script2 en fonction. – alexus

3

$ _REQUEST est superglobale et sera directement disponible à l'intérieur d'une fonction ou d'un script, de sorte que vous n'avez pas besoin de vous soucier de passer au script enfant. Cependant, PHP ne remplira pas $ _REQUEST lorsqu'il est utilisé depuis la ligne de commande, sauf si vous utilisez une option de configuration que je ne connais pas. Vous devrez utiliser le tableau $ _SERVER ['argv'].

Les globes ne sont en effet pas recommandés. Vous aurez un temps plus facile à long terme si vous allez avec ce qui est suggéré. Voici un exemple:

script1.php: 
<?php 
$file = $_SERVER['argv'][1]; // 0 is the script's name 

require_once ('script2.php'); 

$result = doSomething ($file); 
echo $result; 
?> 

script2.php: 
<?php 
function doSomething ($inputfile) 
{ 
    $buf = file_get_contents($inputfile); 
    $buf = strtolower($buf); // counts as something! 
    return $buf; 
} 
?> 

Cet exemple ne fait pas usage de la clé ($ _ REQUEST), mais je ne suis pas sûr de ce que le but de c'est si je suis allé avec $ _SERVER [ « argv »] .

Questions connexes