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

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

问题描述:

I have the following function that is being run from the command line, the first parameter is always an integer e.g (11) and the second parameter is always an string 'acmeinc'

When I run the code via the CLI it outputs :

Number of arguments: 2

However I seem to be unable to pass the $order_id variable to the $this->json_path variable in the same function - its as if the $order_id is passing as an empty value '' - can any suggest why this is happening?

public function execute($order_id, $merchant)
{   
    $numargs = func_num_args();
    echo "Number of arguments: $numargs
";
    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;
}

I am expecting the die() to output the file as follows:

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

Instead the order_id variable doesn't seem to be passing (or is being set somehow to an empty variable as follows:

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

Can anyone explain why this is happening?

Sussed it... it was being passed via another function and defaulting it to an empty variable.. doh!