使用PHP& Codeigniter通过命令行界面

时间:2013-11-19 10:11:01

标签: php codeigniter command-line phantomjs casperjs

我有从命令行运行的以下函数,第一个参数总是一个整数,例如(11),第二个参数总是一个字符串'acmeinc'

当我通过CLI运行代码时,它输出:

Number of arguments: 2

但是我似乎无法将$ order_id变量传递给同一函数中的$ this-> json_path变量 - 就好像$ order_id作为空值传递'' - 可以说明为什么这是发生?

public function execute($order_id, $merchant)
{   
    $numargs = func_num_args();
    echo "Number of arguments: $numargs\n";
    print_r($numargs[0]);
    print_r($numargs[1]);

    $this->_casperjs_path = 'casperjs';

    $this->script_path = '"/srv/mysite.com/application/casperjs/'. $merchant .'.js"';
    $this->json_path = '"/srv/mysite.com/application/casperjs/orders/'. $merchant .'-'. $order_id .'.txt"';             
    $path = ( $this->_phantomjs_path != '' ? 'PHANTOMJS_EXECUTABLE=' . $this->_phantomjs_path . ' ' : '' ) . $this->_casperjs_path . ' ' . $this->script_path . ' ' . $this->json_path; 
    die($this->json_path); // '"/srv/mysite.com/application/casperjs/orders/acmeinc-.txt"'  
    $return_value = exec( $path, $output = array());

    return $return_value;
}

我期望die()按如下方式输出文件:

'"/srv/mysite.com/application/casperjs/orders/acmeinc-1.txt"'

相反,order_id变量似乎没有传递(或者以某种方式设置为空变量,如下所示:

'"/srv/mysite.com/application/casperjs/orders/acmeinc-.txt"'

任何人都可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

怀疑它...它是通过另一个函数传递并将其默认为一个空变量.. doh!