1
0
mirror of https://github.com/php/php-src.git synced 2026-03-26 09:12:14 +01:00
Files
archived-php-src/sapi/cli
Dmitry Stogov b7715c7e8a Refactored parameter passing mechanism.
In PHP-5.6 and below each argument passed to user function was copies on VM stack twice.
Now we always have ZEND_INIT_FCALL (or simular) opcode that pushes "call frame" on top of VM stack.
"Call frame" is actually the same zend_execute_data structure.
All the following ZEND_SEND instructions push arguments on top of the stack in a way that they directly comes into corresponding CV variables of the called frame. Extra arguments are copied at the end of stack frame (after all CV and TMP variables) on function enterance.

There are two minor incompatibilities:
1) It's not allowed to decalre functions redefining arguments e.g. "function foo($a,$a) {}".
2) func_get_arg() and func_get args() return the current value of argument and not the original value that was sent.
2014-06-30 15:43:45 +04:00
..
2014-06-18 17:50:27 +04:00
2014-01-03 11:08:10 +08:00
2014-01-03 11:08:10 +08:00
2014-01-03 11:08:10 +08:00
2013-08-06 22:49:56 +02:00
2014-06-18 00:18:47 +03:00
2014-01-03 11:08:10 +08:00
2014-01-03 11:08:10 +08:00
2010-04-21 01:27:22 +00:00
2003-03-30 10:56:34 +00:00

The CLI (command line interface) SAPI has been introduced
with a goal of making PHP better at supporting the creation of 
stand alone applications.

It is based on CGI SAPI with all CGI specific things removed.

The main differences between the two:

* CLI is started up in quiet mode by default.
  (-q switch kept for compatibility)
* It does not change the working directory to that of the script.
  (-C switch kept for compatibility)
* Plain text error message
* $argc and $argv registered irrespective of the register_argc_argv 
  php.ini setting.
* implicit_flush always on
* -r option which allows execution of PHP code directly from
  the command line (e.g. php -r 'echo md5("test");' )
* Other more sophisticated command line switches (see: man php)
* max_execution_time is set to unlimited, overriding php.ini setting.