2012-08-12 8 views
6

Sto usando exec() per eseguire un file ma il file è in una classe, ho letto di più su argv ma era confuso. Ho bisogno di farlo funzionare all'interno di una classe.

Dice:

Si prega di notare che, $ argv e $ argc devono essere dichiarati globale, durante il tentativo di accedere all'interno di un metodo della classe

su php.net

+0

E quale obiettivo? Gli argomenti sono per l'esecuzione della console. – Stony

risposta

20

Ciò significa che argc/argv non sono superglobali: sono visibili solo nel contesto di livello superiore degli script PHP, quindi ...

<?php 

$x = $argv[1]; // works 

class foo { 
    function bar() { 
     echo $argv[1]; // undefined 
    } 
    function baz() { 
     global $argv; 
     echo $argv[1]; // works 
    } 
} 
+0

risolto problema! grazie – user1588878

+1

Questo può essere fatto usando '$ GLOBALS ['argv'] ...' pure. Nel caso in cui copiare una variabile nel proprio ambito corrente o cercare di renderli superglobali è indesiderabile. – ThorSummoner