Source

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.

Zend
----
    * 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.
    * 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

global
------
    * when used in standalone (skell-script like) mode don't urldecode
      arguments passed to php. right now it's not possible to say
        /usr/local/bin/php somescript.php dog+cat.txt
      as "dog+cat.txt" will arrive in php as "dog cat.txt". 
    * make everything on the language-level independent of your locale setings.
    * always build the standalone executable as well as the chosen SAPI 
      target.
    * make sure all source files have the "right" copyright.
    * the following modules still use PHP3_TLS_*() macros (and thereby don't 
      work in ZTS mode): ext/db/db.c, ext/gd/gd.c
    * 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
      dependices. (eg ftp)
    * --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?).
    * on some platforms unimplemented function will just do nothing (e.g. symlink)
      they should print a warning or not even be defined!
    * implement javadoc based function docs template system.
    * use thread-safe resolver functions (either require BIND 8 or adns).
    * provide optional IPv6 support.
    * make SAPI conform to CGI/1.1. Currently, all SAPI modules
      define REMOTE_ADDR etc. themselves and reach only various level
      of compliance.
    * 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 aliases to functions to conform to new naming conventions, e.g.
      str_to_upper().
    * see what functions might need to be changed to use HashPosition, so
      that the internal array pointer is not affected.

documentation
-------------
    * add remarks in the documentation which functions are not implemented on win32.
    * add remarks in the documentation which functions are not binary-safe.
    * improve documentation for the sablotron extension
    * update curl documentation
    * write documentation for the bzip2 extension
    * write documentation for the zziplib 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/dav
--------
    * rewrite.

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
    * add option to preg_grep() to return entries that _don't_ match

ext/sablot
----------
    * Re-write the error handling and reporting interface
    * Cleanup the underlying code a bit
    * Add proper support for the message handlers

ext/session
-----------
    * 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 classname 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().
    * array_add(). (Andrei)
    * 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 useable 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 datatypes:
        dateTime
        binary
        recordset

        http://www.wddx.org/WDDX_SDK_10a/7__References/WDDX_DTD.htm
        (Andrei)

    * implement wddx_packet_as_javascript(). (Andrei)

other cool stuff
----------------
    * PVM extension
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.