2015-06-16 137 views
1

當我嘗試這__construct:ARGV和ARGC是未定義或爲空

var_dump($argc); 
var_dump($argv); 
var_dump($_SERVER["argv"]); 

它返回錯誤

未定義的變量:argc和
未定義的變量:argv的

和陣列

(size = 0)empty

當我在全局聲明$ argc和$ argv時,它返回全部爲空。

使用nncron這樣也我解析參數:

* * * * * php \php\class.xmlcontroler.php timeout=60 

0 * * * * php \php\class.xmlcontroler.php timeout=3600 

什麼解決辦法嗎?

+2

可能是寄存器[register_argc_argv](HTTP:// php.net/manual/en/ini.core.php#ini.register-argc-argv)必須是acti vated。 – Henrik

+0

register_argc_argv ;默認值:開啓 ;開發價值:Off ;生產值:關 – user1814358

回答

3

$argc僅在全局命名空間中可用。你將不得不把它們作爲你的構造函數的參數。

<?php 
function foo() 
{ 
    var_dump($argv); 
} 
echo "global\n"; 
var_dump($argv); 

echo "function\n"; 
foo(); 

將提供:

global 
array(2) { 
    [0]=> 
    string(5) "a.php" 
    [1]=> 
    string(3) "123" 
} 
function 
NULL 

當像這樣調用php a.php 123

更新:類例如

<?php 
class Foo 
{ 
    public function __construct($argv) 
    { 
     // use $argv 
    } 
} 

$foo = new Foo($argv); 
+0

所以函數foo()不在課堂內?如果不在課堂內部,我怎麼稱呼它? foo()或$ this-> foo()在構造內部不起作用... – user1814358

+0

我用一個類的示例更新了我的答案 – joconja