===== Request for Comments ===== This page gives an overview of the current RFC for PHP. Note: An RFC page is effectively "owned" by the person that created it. If you want to add changes, get permission by the creator. If no agreement can be found, the only course of action is to create a competing RFC. In this case the old RFC page will be modified to become an intermediate page that points to all the competing RFC's. A new page in this RFC namespace will automatically be loaded with a template for an RFC. Customize as needed. ===== Active ===== * [[rfc:HorizontalReuse|Traits]]\\ Traits is a mechanism for code reuse in single inheritance languages such as PHP. A Trait is intended to reduce some limitations of single inheritance by enabling a developer to reuse sets of methods freely in several independent classes living in different class hierarchies. This RFC proposes a basic version of Traits. * [[rfc:NonBreakableTraits|Non-breakable Traits]]\\ This RFC is a extension to the basic proposal. It includes the notion of trait-local methods and properties. * [[rfc:typechecking|Parameter (and Return) value type hints/checks]]\\ Several RFC that propose to complete the actual parameter type hints/checks (and an implementation for return value type hints). * [[rfc:calltimebyref|call_time_pass_by_reference]]\\ This RFC proposes that call_time_pass_by_reference be switched off by default in PHP 5.3. * [[rfc:zendsignals|Zend Signal Handling]]\\ Improve stability and speed when running under any forking SAPI by adding deferred signal handling to the Zend Engine. * [[rfc:tls|Native TLS in ZTS]]\\ Improving performance of ZTS builds by using native thread local storage. * [[rfc:better_benchmarks|Better benchmarks for PHP]]\\ A proposal for replacing current bench.php benchmarking script. * [[rfc:remove_zend_api|Remove reliance of Zend API]]\\ A proposal to remove the use of the Zend API in PHP libraries. * [[rfc:php_native_interface|PHP Native Interface]]\\ Provide complete alternative to writing libraries interfaces using the Zend API libraries. * [[rfc:altmbstring|Alternative mbstring implementation using ICU]]\\ A proposal to completely rewrite mbstring extension with ICU. * [[rfc:autoload_include|Alternative to include/require for autoloaders]]\\This RFC aims to offer an alternative solution to the well known fopen() “hack” used in autoloaders in order to verify the existence of files inside the include path ===== In the works ===== * [[rfc:PHPVCS|PHP Version Control System]]\\ This RFC discusses the switch from CVS to some other version tracking system * [[rfc:pdov1|PDO Version 1 Improvements]]\\ This RFC proposes a set of improvements to be made to PDO. * [[rfc:extensionsiberia|Siberia]]\\ This RFC proposes to create a cemetery for dead extensions (PECL or core). * [[rfc:taint|Tainted variables]]\\ This RFC proposes an implementation of variable tainting in PHP. * [[rfc:lemon|Lemon as a language parser]]\\ This RFC discusses the switch from YACC/Bison to lemon for the main language parser * [[rfc:static-classes|Static classes]]\\ This RFC proposes the introduction of static classes for PHP * [[rfc:peclversioning|PECL versioning]]\\ This RFC, about tackling the versioning issues in PECL extensions, has been implemented across PECL for several months. But what should be done about extension versioning in the PHP core? * [[rfc:protectedlookup|Improve consistency of protected member lookups]]\\ This RFC proposes to eliminate an inconsistency in the way protected class members are resolved. * [[rfc:class_casting_to_scalar|class casting to scalar]]\\ This RFC proposes a way to do like __toString(), for other scalar types * [[rfc:functiongetentropy|Function getEntropy]]\\ Feature request for a new userspace function providing a truly random value. * [[rfc:errors_as_exceptions|Errors as Exceptions]]\\ This RFC discusses the conversion of errors to exceptions * [[rfc:propertygetsetsyntax|Property get/set syntax]]\\ This RFC proposes to add a C# style property get/set syntax to PHP classes. ===== Accepted ===== * [[rfc:magicquotes|Magic Quotes]]\\ This RFC proposes how we deal with magic quotes from PHP 5.3.0 to 6.0.0. * [[rfc:lsb_parentself_forwarding|LSB parent::/self:: forwarding]]\\ Changes how parent:: and self:: work with LSB by making them forwarding. * [[rfc:namespaceseparator|RFC on what namespace separator to choose]] ===== Implemented ===== * [[rfc:newinis|New INI Files:]]\\ A proposal for two new INI files which will replace the current INI's packaged with PHP. One focused on production deployments and the other focused on development deployments. * [[rfc:heredoc-with-double-quotes|HEREDOC with double quotes]]\\ This RFC is about allowing double quote syntax similar to single-quotes in NOWDOC as a HEREDOC syntax variant (in PHP 5.3) * [[rfc:array_count_handlers|Array vs. count_elements handler]]\\ Internal change to allow some optimization and add consistency. * [[rfc:e-user-deprecated-warning|New error level E_USER_DEPRECATED]] \\ This RFC proposes to introduce a new userspace error level similar to E_DEPRECATED for user level deprecation warnings * [[rfc:session_upload_progress|Session upload progress]]\\ Using sessions to provide upload progress feedback to users. * [[rfc:closures|Closures]]\\ This RFC proposes Closures and lambda functions for PHP. * [[rfc:rounding|Rounding in PHP]]\\ Make round() produce predictable results on all platforms and fix some problems in the process. * [[rfc:namespaceresolution|Namespace resolution order]] * [[rfc:dtrace|DTrace Probes for PHP]]\\ Provide DTrace probes for PHP. ===== Declined ===== * [[rfc:shortsyntaxforarrays|Short syntax for arrays]]\\ This RFC will discuss an language enhancement for simple and easy array definition. * [[rfc:ifsetor|ifsetor() Operator]]\\ This RFC proposes an operator that efficiently implements (isset($foo) ? $foo : $bar) as ifsetor($foo, $bar) * [[http://marc.info/?l=php-internals&m=121397217528280&w=2|Method overloading]] * [[rfc:shortags|Short tags in templates]]\\ This RFC discusses ways to enable short tags template syntax in a way that would be easy for users and compatible with XML users' requirements. * [[rfc:functionarraydereferencing|Function array dereferencing]]\\ You know, like foo()['bar']