2015-06-16 2 views
1

Когда я попробовать это в __construct:ARGV и ARGC являются неопределенными или нулевой

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

Он возвращает ошибку

Неопределенная переменная: ARGC и
Неопределенная переменная: ARGV

и массив

(size = 0) empty

Когда я объявляю $ argc и $ argv в глобальном, он возвращает все значения null.

Также я разбор аргументы, используя 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 ; Значение по умолчанию: On ; Значение разработки: выкл. ; Значение производства: выкл. – 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

Update: пример класса

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

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

поэтому функция foo() не внутри класса? Как я могу назвать это, если он не внутри класса? foo() или $ this-> foo() не работает внутри конструкции ... – user1814358

+0

Я обновил свой ответ с помощью примера класса – joconja

Смежные вопросы