mirror of
https://github.com/php/php-src.git
synced 2024-11-28 20:34:29 +08:00
212 lines
8.7 KiB
Plaintext
212 lines
8.7 KiB
Plaintext
Component: Zend Engine 2
|
||
|
||
Important stuff to finish: PPP members/PPP methods,
|
||
support of overloaded extensions, possibly differentiate
|
||
between class and namespace as discussed with Stig in
|
||
Germany.
|
||
Responsibility: Zeev, Andi, Stas
|
||
Time frame: Couple of months for first part and extensions will be
|
||
ongoing while PHP is being fixed.
|
||
Things to leave for later versions: Native aggregation
|
||
support, accessing static members via object and not class.
|
||
|
||
|
||
Component: Aggregation
|
||
Responsibility: Andi, Stig?
|
||
Time frame: ?
|
||
|
||
|
||
Component: Introspection
|
||
|
||
get_function_definition(<is_callable> [field]) =>
|
||
array(
|
||
file => filename
|
||
line_start =>
|
||
line_end =>
|
||
parameters => array( name, byref, default )
|
||
static_variables => array( name, value/default )
|
||
scope => 'namespace' | 'class' | null
|
||
namespace => classname | namespacename | 'main'
|
||
protection => protection_flags
|
||
phpdoc => pre-scanned-phpdoc-string
|
||
type => 'internal' | 'user'
|
||
)
|
||
|
||
get_class_definition(<class> [field]) =>
|
||
array(
|
||
type => 'internal' | 'user'
|
||
file => filename
|
||
line_start =>
|
||
line_end =>
|
||
name => pretty-name
|
||
parent => classname | namespace | null
|
||
flags => bitfield (ABSTRACT)
|
||
methods => array( array( name, phpdoc ) )
|
||
default_properties => array( array( name, value, phpdoc ) )
|
||
private_properties => array( array( name, value, phpdoc ) )
|
||
protected_properties => array( array( name, value, phpdoc ) )
|
||
public_properties => array( array( name, value, phpdoc ) )
|
||
static_members => array( array( name, value, phpdoc ) )
|
||
constants => array( array( name, value, phpdoc ) )
|
||
classes => array( array( name, phpdoc ) )
|
||
phpdoc => pre-scanned-phpdoc-string
|
||
)
|
||
|
||
get_constant_definition(<constant> [field]) =>
|
||
array(
|
||
file => filename
|
||
line_start =>
|
||
line_end =>
|
||
name =>
|
||
value =>
|
||
phpdoc =>
|
||
)
|
||
|
||
get_global_variable_defintion(<name> [field]) =>
|
||
array(
|
||
file =>
|
||
line_start =>
|
||
line_end =>
|
||
name =>
|
||
phpdoc =>
|
||
)
|
||
|
||
We tried to take into account the implementation of each piece of
|
||
information, and there are some that are problematic, especially those
|
||
regarding constants and global variables (where do we store the extra
|
||
information?)
|
||
|
||
With "pre-scanned-phpdoc-string" we mean converting:
|
||
|
||
/**
|
||
* Blah blah blah
|
||
* @param foo ...
|
||
*/
|
||
|
||
to:
|
||
|
||
Blah blah blah
|
||
@param foo
|
||
|
||
The rest of the phpdoc handling should be left to an extension.
|
||
Responsibility: Stig, Andrei, Harald
|
||
Time frame: ?
|
||
|
||
|
||
Component: Redesign of API Versioning
|
||
Responsibility: ?
|
||
Time frame: 1 month
|
||
|
||
|
||
Component: Thread Safety
|
||
Identify the extensions that are not thread safe by design
|
||
or due to dependant libraries and identify them as such.
|
||
If possible try to resolve thread safety issue via code
|
||
improvements (if php code or patches will be accepted by
|
||
library maintainers). For situations where thread safety
|
||
cannot easily be acheived a flag in the extension API is
|
||
set so PHP can identify non-thread safe extensions. These
|
||
extensions will not be loaded in a ZTS compiled binary
|
||
(unless it is cli/cgi).
|
||
|
||
Responsibility: ?
|
||
Time frame: ?
|
||
|
||
|
||
Component: SAPI
|
||
Environment variables defined in the CGI spec need to be
|
||
verified in each SAPI module that they conform to the CGI
|
||
spec correctly. If they do not, the SAPI module needs to
|
||
fix the variable prior to script execution. Having this
|
||
conformity will aid in having PHP scripts run correctly
|
||
under different sapi modules.
|
||
|
||
Responsibility: Shane Caraveo & each sapi module owner
|
||
Timeframe: ? (but shouldn't be much effort, most modules are probably ok)
|
||
|
||
|
||
Component: Input Filtering
|
||
- Implement a SAPI input filter hook that will get called
|
||
just before registering a variable in the
|
||
treat_data/post_handler hooks.
|
||
- Make sure this is also done in mbstring
|
||
- Provide access functions, or perhaps a new
|
||
$_RAW_GET/POST/Cookie set of superglobals to get at the
|
||
unfiltered data
|
||
- Provide a .ini directive which allows people to set their
|
||
input filter to one of the built-in strip_tags,
|
||
htmlspecialchars or whatever other internal function might
|
||
be useful here.
|
||
- (The main benefit of this is to make it easier for people
|
||
to solve the XSS problem once and for all without having
|
||
to go through every line of their code and adding input
|
||
validation/filtering everywhere)
|
||
Responsibility: Rasmus
|
||
Timeframe: Yesterday
|
||
|
||
|
||
Component: RPC Abstraction Layer
|
||
Porting java, com, dotnet, xmlrpc, corba, soap and python, srm
|
||
(are there more ?) to work with the new oo api and preferably
|
||
by using ext/rpc.
|
||
Responsibility: Harald
|
||
Time frame: 2 months (but i have to wait for a few engine features first)
|
||
|
||
|
||
Component: OO Extensions
|
||
Each OO extension has to be revised and rewritten to fit into
|
||
the new OO model. We should decide which extensions are a must
|
||
to have for the release and which can be ported by the maintainer
|
||
later as a separate pecl release.
|
||
A list of extensions to be extended that have to be investigated:
|
||
* browscap
|
||
* aggregate
|
||
* all *sql extensions (*_fetch_object)
|
||
* domxml (seems like christian is rewriting it anyways)
|
||
* ming
|
||
Responsibility: Harald (, extension maintainers)
|
||
|
||
|
||
Component: Abstract Data Types (ADT)
|
||
Responsibility: Sterling, Harald
|
||
Time frame: ?
|
||
|
||
|
||
Component: MySQL Extension
|
||
Complete rewrite, leveraging the new MySQL 4 / MySQL 5
|
||
features.
|
||
Responsibility: Georg Richter, Zak Greant
|
||
Timeframe: ?
|
||
|
||
|
||
Component: XML
|
||
- Rewrite DOMXML and incorporate all (or most of) W3C-DOM2.
|
||
- Use the new ZE2 features (Exceptions, setter/getter).
|
||
- Add SAX(2), XML Schema.
|
||
- XSLT, HTML, XPath, XPointer, DTD Validation will still be
|
||
supported, have to find a meaningful API for it.
|
||
- Break BC, warn users now.
|
||
- Look at the libxml2 patch by lukas schr<68>der and see if we can prevent
|
||
memory leaks with it (anyway, getting rid of mem-leaks and intelligent
|
||
memory management is on top prio...)
|
||
- In the longer term, domxml (or another name, as with todays features
|
||
domxml is a little bit misleading) shall be the main xml-class, which
|
||
covers most of what's needed for decent XML support in PHP ;)
|
||
But there is certainly place for others like Sablotron etc.
|
||
Responsibility: Christian Stocker
|
||
Timeframe: ?
|
||
|
||
|
||
Component: Test Suite
|
||
Extending the test suite with atleast a test for every
|
||
function in an extension that doesn't require external
|
||
resources. Also developing an automated test thing which
|
||
cvs ups's, compiles and tests the build on a daily base on
|
||
as much platforms/extensions as possible.
|
||
|
||
The test suite will also be extended to support threaded
|
||
testing and testing for differing sapi modules (via http
|
||
calls or other methods).
|
||
Reponsibility: Derick (, extension maintainers)
|
||
Time frame: 3 months
|