1. php
  2. php-src


php-src / TODO

Things to do or at least think about doing in the future. Name in
parenthesis means that person has taken on this project.

    For PHP 4.3.0:
    * Allow foreach ($array as $k => &$val) syntax. right now we cannot 
      traverse an array without copying each element.
    * Allow foreach ($array as $k => list($a, $b)) syntax for multi
      dimensional arrays.
    * Look at replacing c-lib call tolower().
    * Make hash API functions work with HASH_OF() to save time.
    * Allow to set a default value for call-by-reference-parameters. 
      eg: function hello (&$pallo = NULL) {} 
    * Disallow function(method) redefinition in class.
    * Add configure test to determine if dlsym() requires underscore and set
      DLSYM_NEEDS_UNDERSCORE accordingly. Perl and zsh have it in configure, 
      for example. (DONE?)

    For PHP 5.0.0:
    * Native large number support (probably with GNU GMP)
    * Const'ify APIs. Right now, many functions leave parameters untouched,
      but don't declare those as const. This makes interaction with other
      interfaces difficult which pass const parameters to us.
    * Add try..catch/throw exception handling.
    * Fix Zend shallow copy issues with objects and arrays.

    For PHP 4.3.0:
    * Add aliases to functions to conform to new naming conventions, e.g.
    * Make all extensions thread-safe.
    * Make everything on the language-level independent of your locale 
    * Change PHP error messages, so that they point to pages or sections 
      in the PHP Manual.
    * Make sure that all ZTS globals get destructed. Most ts_allocate_id()
      calls should have a dtor entry.
    * Activate all extensions by default that don't rely on external
      dependencies. (eg ftp) (DONE?)
    * on some platforms unimplemented function will just do nothing 
      (e.g. symlink) they should print a warning or not even be defined!
      (DONE ?)
    * Finish PHP streams abstraction, nuke all that issock stuff, implement SSL
      socket support. (wez)
        - ext/ftp/ -> all FILEs to streams
        - ext/bz2/ -> convert to stream impl.
    * Use arg_separator.input to implode args in the CGI sapi extension
      and arg_separator.input to explode in php_build_argv(). (DONE?)
    * Change the odbc_fetch_into() function to require ALWAYS the first two
      parameters ($conn_id and $array), and make the third (row) be optional.
    * Remove --with-openlink configure option (--with-iodbc replaces it).
    * Implement flush feature suitable for nested output buffers.

    For PHP 5.0.0
    * bundle and use curl lib for fopen wrapper.
    * --enable-all in configure. (--enable-shared=max ...)
    * make configure print out a summary when it's done (like XEmacs)
    * replace standard functions which work on static data with 
      reentrancy-safe functions (DONE?).
    * make SAPI conform to CGI/1.1. Currently, all SAPI modules
      define REMOTE_ADDR etc. themselves and reach only various level
      of compliance.
    * see what functions might need to be changed to use HashPosition, so
      that the internal array pointer is not affected.
    * Move most extensions and PEAR packages out of the PHP CVS tree,
      include them again during release packaging.

    * use thread-safe resolver functions (either require BIND 8 or adns).
    * implement javadoc based function docs template system.
    * provide optional IPv6 support.
    * find a better way to implement script timeouts. SIGVTALRM is used
      by some POSIX threads implementations (i.e. OpenBSD) and is not
      available in ZTS mode.

    * Add remarks in the documentation which functions are not implemented 
      on win32. 
    * Add remarks in the documentation which functions are not binary-safe.
    * Update curl documentation (DONE?)
    * Add developer documentation.
    * Add detailed documentation for Java extension.

    * Use the cURL write handler to save data for use when returning data or 
      outputting data.
    * Have a warning scheme for when people use unsupported features.

    * All OCIFetch*() functions should return 0 for no more data and false on 
    * Have a flag that trims trailing spaces from CHAR fields on retrieval.
    * Make allow_call_time_pass_reference=Off working.
    * For additional todo information, see oci8.c, in ext/oci8

    * Allow user to set PCRE_NOTEMPTY, PCRE_ANCHORED at execution time, maybe

    For PHP 4.3.0:
    * Add pg_metadata() with metadata cache feature.
    * Add pg_convert() to check and convert array value for query.
    * Add pg_insert/pg_update/pg_delete/pg_select for simple query.

    For PHP 4.3.0:
    * session_abort() to abort session. ie: Do not save session data.
    * Allow unset($_SESSION) or unset($HTTP_SESSION_VARS) to unset
      session vars regardless of register_globals setting.

    * Maybe implement finer-grained session variables that could be 
      locked individually.
    * Write a network-transparent storage back-end with fallover
    * Provide a callback facility which is executed upon encountering
      an unknown class name during deserialization

    * Make the extension work on windows (Daniel Beulshausen)
    * Make the extension work with Solaris and the Sun GCC

    * Add a version number to data serialized via serialize().
    * Possibly modify parsing of GPC data to automatically create arrays if
      variable name is seen more than once.
    * Implement regex-cache for url-functions.
    * stri_replace(). (Andrei)
    * Move socket related functions to fsock.c.
    * NOT binary safe:
    * Rewrite win32 SMTP code to be usable for *ix to, maybe as a (default)
      module of its own (Hartmut)

    * More fully support the zziplib API

    * See if we can support the remaining data types:


    * implement wddx_packet_as_javascript(). (Andrei)

other cool stuff
    * PVM extension