Things to do or at least think about doing in the future. Name in parenthesis means that person has taken on this project. Zend ---- 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. global ------ For PHP 4.3.0: * Add aliases to functions to conform to new naming conventions, e.g. str_to_upper(). * Make all extensions thread-safe. * Make everything on the language-level independent of your locale settings. * 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. Other * 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. documentation ------------- * 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. ext/curl -------- * 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. ext/oci8 -------- * All OCIFetch*() functions should return 0 for no more data and false on error. * 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 ext/pcre -------- * Allow user to set PCRE_NOTEMPTY, PCRE_ANCHORED at execution time, maybe ext/pgsql --------- 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. ext/session ----------- 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. Other: * Maybe implement finer-grained session variables that could be locked individually. * Write a network-transparent storage back-end with fallover facilities * Provide a callback facility which is executed upon encountering an unknown class name during deserialization ext/sockets ----------- * Make the extension work on windows (Daniel Beulshausen) * Make the extension work with Solaris and the Sun GCC ext/standard ------------ * 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: strtok() basename() dirname() strrpos() strrchr() strip_tags() * Rewrite win32 SMTP code to be usable for *ix to, maybe as a (default) module of its own (Hartmut) ext/zziplib ------------ * More fully support the zziplib API ext/wddx -------- * See if we can support the remaining data types: dateTime binary http://www.wddx.org/WDDX_SDK_10a/7__References/WDDX_DTD.htm (Andrei) * implement wddx_packet_as_javascript(). (Andrei) other cool stuff ---------------- * PVM extension