====== Request for Comments ====== This page gives an overview of the current RFCs for PHP. To create a new RFC, see [[rfc:howto|How To Create an RFC]]. Note: An RFC is effectively "owned" by the person that created it. If you want to make changes, get permission from 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 should 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 an RFC [[rfc:template|template]]. Customize as needed. ===== In voting phase ===== This is section is for RFCs that are currently being voted on. * [[rfc:release_cycle_update|Release cycle update]] (Created 2023-11-05, Discussion started: 2023-11-10, Voting started: 2024-04-09, Voting ends: 2024-04-29) * [[rfc:property-hooks|Property access hooks]] (Created 2022-12-01, Voting started 2024-04-15) * [[rfc:class-naming-acronyms|Casing of acronyms in class and method names]] (Created and discussion started: 2024-04-05, Voting started 2024-02-22) ===== Under Discussion ===== This section is for RFCs that have been announced on the PHP "internals" mail list. * [[rfc:xmlreader_writer_streams|Add openStream() to XML{Reader,Writer}]] (Created 2024-04-21, Discussion started: 2024-04-22) * [[rfc:pdo_driver_specific_parsers|PDO Driver specific SQL parser]] (Created 2024-04-11, Discussion started: 2024-04-17) * [[rfc:new_without_parentheses|new MyClass()->method() without parentheses]] (Created 2023-12-29, Discussion started: 2024-04-08) * [[rfc:array_find|array_find]] (Created and discussion started: 2024-04-07) * [[rfc:support_object_type_in_bcmath|Support object type in BCMath]] (Created and discussion started: 2024-03-24) * [[rfc:curl-oop|OOP API for cURL extension]] (Created 2024-02-14, Discussion started: 2024-02-14) * [[rfc:not_serializable|NotSerializable attribute]] (created 2023-11-26, discussion started 2023-12-09) * [[rfc:mixed_vs_untyped_properties|Harmonise "untyped" and "typed" properties]] (Created and discussion started: 2023-11-16) * [[rfc:closure_self_reference|Closure self-reference]] (Discussion started: 2023-06-03) * [[rfc:nameof|Allow getting the name of a variable during runtime]] \\ Adds nameof() to get the name of variables, closures, and members during runtime. (Discussion started: 2023-05-13) * [[rfc:clone_with|Clone with]] (Discussion started: 2023-04-17) * [[rfc:core-autoloading|New core autoloading mechanism with support for function autoloading]] (Discussion started: 2023-04-10) * [[rfc:working_with_substrings|Working With Substrings]] (Discussion started: 2023-02-14) * [[rfc:file-descriptor-function|Add file_descriptor() function]] (Discussion started: 2023-01-16) * [[rfc:same-site-parameter|Add SameSite cookie attribute parameter]] (Discussion started: 2023-01-14) * [[rfc:unicode_text_processing|Unicode Text Processing]] (Created 2022-12-15) * [[rfc:list_assoc_unique|List\unique() and Assoc\unique()]] (Created 2022-12-01) * [[rfc:shell_exec_result_code_param|shell_exec() $result_code parameter]] (Created 2021-11-21) * [[rfc:deque|final class Deque]] (Created 2021-09-19) * [[rfc:vector|final class Vector]] (Created 2021-09-16) * [[rfc:curl_user_agent|Default User-Agent for cURL]] * [[rfc:deprecate-boolean-string-coercion|Deprecate boolean to string coercion]] (Created: 2021-06-22) * [[rfc:property_accessors|Property Accessors]] (Created 2021-05-04) * [[rfc:autoload_classmap|Autoload Classmap]] (Created: 2021-03-15) * [[rfc:improve_mysqli|Concepts to improve mysqli extension]] (Created 2020-12-30) * [[rfc:max_execution_wall_time|Wall-Clock Time Based Execution Timeout]] (Created 2020-12-12) * [[rfc:renamed_parameters|Named parameters explicit opt in]] (Created 2020-07-24) * [[rfc:objects-can-be-falsifiable|Objects can be declared falsifiable]] (Created 2020-07-14) * [[rfc:property_write_visibility|Property write/set visibility]] (Created 2020-06-29) * [[rfc:change-terminology-to-excludelist|Change terminology to ExcludeList]] (Created 2020-06-09) * [[rfc:deprecated_attribute|#[\Deprecated] Attribute]]\\ This RFC proposes an attribute to mark declarations as deprecated (Created 2020-05-07) * [[rfc:var-export-array-syntax|Change var_export() array syntax to use shorthand arrays]] (Created 2020-03-29) * [[rfc:to-array|__toArray()]] \\ Add a new __toArray() magic method (Created: 2019-08-28) * [[rfc:prevent_disruptions_of_conversations|Prevent disruptions of conversations]] \\ (Created: 2019-09-19) * [[rfc:normalize-array-auto-increment-on-copy-on-write|Normalize arrays' "auto-increment" value on copy on write]] \\ (Discussion started: 2019-06-20) * [[rfc:alternative-closure-use-syntax|Alternative "use" syntax for Closures]] \\ (Discussion started: 2019-06-15) * [[rfc:nullable-casting|Nullable Casting]] \\ Support nullable types in casting (Discussion started: 2019-04-06) ===== In Draft ===== This section is for early drafts of RFCs that have NOT been announced on the PHP "internals" mail list. * [[rfc:mb_trim_change_characters|Change the default of $characters in mb_trim function]] (Created 2024-04-03) * [[rfc:complete_callstatc_magic|Invoke __callStatic when non-static public methods are called statically]] (Created 2024-03-29) * [[rfc:remove_disable_classes|Remove disable_classes INI setting]] (Created 2023-09-29) * [[rfc::deprecations_php_8_4|Deprecations for PHP 8.4]] (Created 2023-07-25) * [[rfc:array_group|Introduce array_group and array_group_pair grouping functions]] (Created 2023-06-01) * [[rfc:implicit_move_optimisation|Implicit Move Optimisation]] (Created: 2023-05-13) * [[rfc:access_scope_from_magic_accessors|Access Scope from Magic Accessors]] (Discussion started: 2023-01-19) * [[rfc:property-capture|Property Capture for Anonymous Classes]] (Created: 2022-04-13) * Function interfaces * [[rfc:allow_casting_closures_into_single-method_interface_implementations|Closure::castTo]] * [[rfc:allow-closures-to-declare-interfaces-they-implement|Explicit closure interfaces]] * [[rfc:structural-typing-for-closures|Structural Typing for Closures]] * [[rfc:local_variable_types|Types for Local Variables]] (Created 2023-02-08) * [[rfc:misc_variable_functions|Miscellaneous Variable Functions]] (Created 2023-01-28) * [[rfc:is_valid_utf8|is_valid_utf8()]] (Created 2023-01-27) * [[rfc:2d_matrix_operations|2D Matrix Operations]] (Created 2023-01-24) * [[rfc:gd_image_export_import_pixels|gd imageexportpixels() and imageimportpixels()]] (Created 2023-01-23) * [[rfc:literal_string|LiteralString]] (Created 2022-12-27) * [[rfc:random_migration|Random migration]] (Created 2022-12-22) * [[rfc:sorting_enum|Sorting Enum]] ( Created 2021-09-01 ) * [[rfc:iterator chaining|Iterator chaining]] (Created 2021-03-20) * [[rfc:adts|Algebraic data types (Meta RFC)]] (Created 2020-11-11) * [[rfc:tagged_unions|Tagged Unions (Enums)]] (Created 2020-09-19) * [[rfc:pattern-matching|Pattern matching ''is'' keyword]] (Created 2020-11-11) * ''isIdentical()'' method override (future scope) * Advanced pattern matching (future scope) * [[rfc:typehint_array_desctructuring|Type declarations in array destructuring expressions]] (Created 2020-04-16) * [[rfc:declare_vars|Variable declarations before usage]] \\ Optionally require variables to be declared before usage (Created: 2019-09-19) * [[rfc:unbunle-unmaintained-extensions-php8|Unbundle unmaintained extensions in PHP 8]] \\ Unbundle or assign the PHP Group as maintainer to unmaintained extensions (Created: 2019-07-15) * [[rfc:comprehensions|Comprehensions (short generators)]] \\ Generator Comprehensions for PHP (Created: 2019-03-10) * [[rfc:improved_error_callback_mechanism|Improved Error Callback Mechanism]] \\ This RFC aims to give extensions that intercept errors a better way to register their callbacks. (Created 2015-03-13) * [[rfc:url-opcode-cache|Add support for stream-wrapped URLs in opcode cache]] \\ Adds a generic way to opcode-cache code generated through a stream wrapper. (Created 2017/05/25) ===== Accepted ===== ==== Process and Policy ==== * [[rfc:policy-repository|Policy Repository]] (Created and discussion started 2023-12-04, Voting ended: 2024-01-22) * [[rfc:namespaces_in_bundled_extensions|Namespaces in bundled PHP extensions]] (Created 2021-02-25) * [[rfc:abolish-short-votes|Abolish Short Votes]] \\ Proposal to abolish voting periods of less than two weeks (Created 2019-03-21, Voting ended: 2019-04-22) * [[rfc:abolish-narrow-margins|Abolish Narrow Margins]] \\ Proposal to abolish 50%+1 votes (Created 2016-11-17, Voting ended: 2019-02-22) * [[rfc:security-classification|Security Issue Classification]] \\ Ratify reformed security issue classification. (Accepted 2016-11-18) * [[rfc:php56timeline|PHP 5 Support Timeline]]\\ Determine the Active & Support timelines for PHP 5. * [[rfc:reserve_even_more_types_in_php_7|Reserve Even More Types in PHP 7]] \\ A proposal to reserve even more type names in PHP 7 (Created 2015-02-20) * [[rfc:php7timeline|PHP 7.0 Timeline]]\\ Define an agreed-upon timeline and milestones for PHP 7.0. * [[rfc:travis_ci|Keeping the tests green]] \\ This RFC proposes a policy for keeping PHP CI tests green. * [[rfc:php53eol|Define PHP 5.3 end of life]]\\ The purpose of this RFC is to define when the PHP 5.3 series will no longer be supported. * [[rfc:releaseprocess|Release Process]]\\ PHP release process. * [[rfc:voting|Voting Process]]\\ PHP voting process. * [[rfc:magicquotes|Magic Quotes]]\\ This RFC proposes how we deal with magic quotes from PHP 5.3.0 to 6.0.0. * [[rfc:dvcs|Choosing a distributed version control system for PHP]]\\ This RFC proposes to migrate the PHP SVN repo to a DVCS. * [[rfc:PHPVCS|PHP Version Control System]]\\ This RFC discusses the switch from CVS to some other version tracking system * [[rfc:php6|Name of Next Release of PHP]]\\ To settle what the name of the next major release of PHP shall be. (Created 2014-07-05) * [[rfc:release-md5-deprecation|MD5 Release Checksum]] \\ Deprecate MD5 checksums from Release process (Created: 2017-05-30) * [[rfc:class-naming|Class Naming]] \\ Specify how to deal with abbreviations and acronyms in the coding standard (Created: 2017-06-03) * [[rfc:umaintained_extensions|Cleaning up unmaintained extensions]] \\ (Created: 2016-08-07; Accepted: 2018-06-26) * [[rfc:github_issues|Migrating to GitHub Issues]] (Created 2021-11-01) * [[rfc:promote_php_foundation|Promote the PHP Foundation]] (Created 2024-01-06; Accepted 2024-02-01) ==== Pending Implementation / Landing ==== * [[rfc:deprecate-get-post-sessions|Deprecate GET/POST sessions]] (Created 2024-03-03, Discussion started: 2024-03-03, Voting started: 2024-04-09, Voting ends: 2024-04-23) * [[rfc::adding_bcround_bcfloor_bcceil_to_bcmath|Adding bcround, bcfloor and bcceil to BCMath]] (Created 2023-10-01) * [[rfc::unbundle_imap_pspell_oci8|Unbundle the imap, pspell, and oci8 extensions]] (Created 2023-08-27) * [[rfc:apxs-loadmodule|APXS LoadModule]]\\ This RFC proposes the addition of an option to the configure script that allows the user to specify whether the main Apache .conf file should be appended with the LoadModule entry. * [[rfc:datetime_and_daylight_saving_time|DateTime and Daylight Saving Time Transitions]]\\ Defines expected behaviors and new features to improve how DateTime handles Daylight Saving Time transitions. * PHP 9.0: [[rfc:undefined_property_error_promotion|Undefined Property Error Promotion]] (Created: 2022-04-04) * PHP 9.0: [[rfc:undefined_variable_error_promotion|Undefined variables error promotion]] (Created: 2022-02-17) * PHP 9.0: [[rfc:deprecate_dollar_brace_string_interpolation|Removal of ${} string interpolation]] (Created on 2021-03-13) * [[rfc::resource_to_object_conversion|Resource to object conversion]] (Created 2023-10-31, Discussion started: 2023-11-12, Voting started: 2024-01-05, Voting closed: 2024-01-19) * [[rfc:raising_zero_to_power_of_negative_number|Raising zero to the power of negative number]] (Created 2024-01-11) ===== Implemented ===== **Order in these sections:** Language changes first, library changes later. ==== PHP 8.4 ==== * [[rfc:deprecate-implicitly-nullable-types|Deprecate implicitly nullable parameter types]] (Created 2023-12-20, Discussion started: 2024-01-22, Voting started: 2024-02-28, Voting ended: 2024-03-13) * [[rfc:grapheme_str_split|Grapheme cluster for str_split function: grapheme_str_split]] (Created 2024-03-04, Discussion started: 2024-03-09, Voting ends: 2024-04-10) * [[rfc:mb_ucfirst|Multibyte for ucfirst and lcfirst functions]] (Created 2024-01-16, Discussion started: 2024-01-18, Voting started: 2024-02-21, Discussion restarted: 2024-02-06, Voting closed: 2024-03-07) * [[rfc:http-last-response-headers|Add http_(get|clear)_last_response_headers() function]] (Created: 2024-01-03, Discussion started: 2024-01-03, Voting start: 2024-01-29, Voting closed: 2024-02-14) * [[rfc::rfc1867-non-post|RFC1867 for non-POST HTTP verbs]] (Created 2023-10-06) * [[rfc::jit_config_defaults|Change how JIT is disabled by default]] (Created 2023-11-15) * [[rfc::domdocument_html5_parser|DOM HTML5 parsing and serialization]] (Created 2023-08-12, Discussion started: 2023-09-02, Voting started: 2023-10-02, Voting ended: 2023-10-16) * [[rfc::jit-ir|A new JIT implementation based on IR Framework]] (Created 2023-09-20, Discussion started: 2023-09-21, Voting ended: 2023-10-19) * [[rfc::xml_option_parse_huge|XML_OPTION_PARSE_HUGE]] (Created 2023-09-21, Discussion started: 2023-09-21, Voting started: 2023-10-07, Voting closed: 2023-10-21) * [[rfc::bcrypt_cost_2023|Increasing the default BCrypt cost]] (Created 2023-09-07) * [[rfc::mb_trim|Multibyte for trim function mb_trim, mb_ltrim and mb_rtrim]] (Created 2023-10-19) * [[rfc:new_rounding_modes_to_round_function|New 4 rounding modes to round() function]] (Created: 2023-09-31) * [[rfc:pdo_driver_specific_subclasses|PDO driver specific sub-classes]] (Created 2022-06-20, Voting start: 2023-07-03, Voting closed: 2023-07-17) * [[rfc::improve_callbacks_dom_and_xsl|Improve callbacks in ext/dom and ext/xsl]] (Created 2023-11-05, Discussion started: 2023-11-07, Voting started: 2023-12-21, Voting ended: 2024-01-11) * [[rfc:opt_in_dom_spec_compliance|Opt-in DOM spec-compliance]] (Created 2024-01-13, Discussion started 2024-01-17, Voting started 2024-02-13, Voting closed: 2024-02-27) * [[rfc:dedicated_stream_bucket|Dedicated StreamBucket class]] (Created 2024-01-19, Discussion started: 2024-01-19, Voting started: 2024-03-28, Voting ended: 2024-04-11) ==== PHP 8.3 ==== * [[rfc:deprecations_php_8_3|Deprecations for PHP 8.3]] (Created 2022-08-01) * [[rfc:saner-inc-dec-operators|Path to Saner Increment/Decrement operators]] (Discussion started: 2023-01-17, Voting start: 2023-06-28, Voting end: 2023-07-12) * [[rfc:marking_overriden_methods|Marking overridden methods (#[\Override])]] (Created: 2023-05-06, Voting started: 2023-06-14) * [[rfc:arbitrary_static_variable_initializers|Arbitrary static variable initializers]] (Created 2022-11-06) * [[rfc:unserialize_warn_on_trailing_data|Make unserialize() emit a warning for trailing data]] (Discussion started: 2023-03-27) * [[rfc:dynamic_class_constant_fetch|Dynamic class constant fetch]] (Created 2022-11-04) * [[rfc:improve_unserialize_error_handling|Improve unserialize() error handling]] (Created 2022-09-01, Voting opened 2022-10-14, Voting closed 2022-10-28) * [[rfc:readonly_amendments|Readonly amendments]] (Created 2022-10-24) * [[rfc:typed_class_constants|Typed Class Constants]] (Discussion started: 2023-01-31, Voting started: 2023-02-27) * [[rfc:assert-string-eval-cleanup|Deprecate remains of string evaluated code assertions]] (Created: 2023-05-31, Voting start: 2023-06-28, Voting end: 2023-07-12) * [[rfc:mb_str_pad|mb_str_pad]] (Created: 2023-05-19, Discussion started: 2023-05-20, Voting started: 2023-06-05, Voting closed: 2023-06-19) * [[rfc:saner-array-sum-product|Saner array_(sum|product)()]] (Discussion started: 2023-01-17, Voting opened 2023-02-20, Voting closed 2023-03-06, Implemented: 2023-03-07) * [[rfc:proper-range-semantics|Define proper semantics for range() function]] (Discussion started: 2023-03-27, Voting started: 2023-06-01, Voting ended: 2023-06-15) * [[rfc:randomizer_additions|Randomizer Additions]] (Created 2022-10-09) * [[rfc:datetime-exceptions|More Appropriate Date/Time Exceptions]] (Created 2022-11-29, Implemented: 2023-02-08) * [[rfc:json_validate|json_validate function]] (Created 2022-08-14, Voting closed: 2022-10-07) * [[rfc:sqlite3_exceptions|Use exceptions by default in SQLite3 extension]] * [[rfc:deprecate_functions_with_overloaded_signatures|Deprecate functions with overloaded signatures]] (Discussion started: 2023-04-27, Voting started: 2023-06-26, Voting ended: 2023-07-10) ==== PHP 8.2 ==== * [[rfc:constants_in_traits|Constants in Traits]] (Created 2022-06-21, Voting closed: 2022-07-19) * [[rfc:rng_extension|Random Extension 5.x]] (Created 2021-05-19, Voting closed: 2022-06-28) * [[rfc:random_extension_improvement|Random Extension Improvement]] (Created 2022-06-16, Voting closed: 2022-07-16) * [[rfc:fetch_property_in_const_expressions|Fetch properties of enums in const expressions]] (Created 2022-05-27) * [[rfc:dnf_types|Disjunctive Normal Form Types]] (Created 2021-11-04, Voting opened: 2022-06-17, Voting closed: 2022-07-03) * [[rfc:true-type|Add true type]] (Created 2022-04-07, Voting opened: 2022-05-29, Voting closed: 2022-06-12) * [[rfc:mysqli_execute_query|MySQLi Execute Query]] (Created 2022-04-21, Voting opened: 2022-05-11, Voting closed: 2022-05-25) * [[rfc:readonly_classes|Readonly classes]] (Created 2021-08-04) * [[rfc:null-false-standalone-types|Allow null and false as stand-alone types]] (Created 2022-02-20, Voting start: 2022-03-12, Voting end: 2022-03-27) * [[rfc:strtolower-ascii|Locale-independent case conversion]] (Created 2021-09-22) * [[rfc:deprecate_partially_supported_callables|Deprecate partially supported callables]] (Created 2021-09-02) * [[rfc:partially-supported-callables-expand-deprecation-notices|Expand deprecation notice scope for partially supported callables]] (Created 2022-05-12, Voting opened: 2022-05-31) * [[rfc:deprecate_dynamic_properties|Deprecate dynamic properties]] (Created 2021-08-23) * [[rfc:redact_parameters_in_back_traces|Redacting parameters in back traces]] ( Created 2022-01-10 ) * [[rfc:deprecate_dollar_brace_string_interpolation|Deprecate ${} string interpolation]] (Created on 2021-03-13) * [[rfc:mysqli_support_for_libmysql|Remove support for libmysql from mysqli]] ( Created 2022-01-06) * [[rfc:remove_utf8_decode_and_utf8_encode|Deprecate and remove utf8_decode() and utf8_encode()]] * [[rfc:iterator_xyz_accept_array|Make the iterator_*() family accept all iterables]] (Created 2022-06-21, Voting opened: 2022-07-05) ==== PHP 8.1 ==== * [[rfc:autovivification_false|Disable autovivification on false]] (Created 2021-05-25) * [[rfc:pure-intersection-types|Pure intersection types]] (Created 2021-03-23, Voting started 2021-06-03, Voting ended 2021-06-17, Merged 2021-07-05) * [[rfc:intldatetimepatterngenerator|Add IntlDatePatternGenerator]] (Voting started 2021-05-14 and ended 2021-05-28) * [[rfc:implicit-float-int-deprecate|Deprecate implicit non-integer-compatible float to int conversions]] (Voting started 2021-04-01, Voting ended 2021-04-14) * [[rfc:enumerations|Enumerations]] (Created 2020-09-19) * [[rfc:deprecate_null_to_scalar_internal_arg|Deprecate passing null to non-nullable arguments of internal functions]] (Created 2020-12-01) * [[rfc:array_unpacking_string_keys|Array unpacking with string keys]] (Created 2021-01-07) * [[rfc:is_list|Add array_is_list(array $array): bool]] (Created 2020-12-19) * [[rfc:explicit_octal_notation|Explicit octal integer literal notation]] (Created: 2020-10-20, Voting Started: 2020-11-11, Voting Ended: 2020-11-25, Merged into master: 2021-01-04) * [[rfc:restrict_globals_usage|Restrict $GLOBALS usage]] (Created 2020-12-02) * [[rfc:mysqli_default_errmode|Change Default mysqli Error Mode]] (Created 2021-01-20) * [[rfc:mysqli_fetch_column|Add fetch_column method to mysqli]] (Created 2021-03-28) * [[rfc:mysqli_bind_in_execute|Mysqli bind in execute]] (Created 2021-02-11) * [[rfc:fsync_function|fsync() Function]] (Created 2021-01-30) * [[rfc:noreturn_type|noreturn type]] (Voting started 2021-03-30) * [[rfc:fibers|Fibers]] (Created 2020-12-04) * [[rfc:phase_out_serializable|Phasing out Serializable]] (Created 2020-12-07) * [[rfc:static_variable_inheritance|Static variables in inherited methods]] (Created 2021-02-23) * [[rfc:internal_method_return_types|Add return type declarations for internal methods]] (Created 2021-03-06) * [[rfc:final_class_const|Final class constants]] (Created 2021-05-04) * [[rfc:make-reflection-setaccessible-no-op|Make reflection setAccessible() no-op]] (Created 2021-06-13) * [[rfc:new_in_initializers|New in initializers]] (Created 2021-03-02) * [[rfc:deprecations_php_8_1|Deprecations for PHP 8.1]] (Created 2019-07-23) * [[rfc:first_class_callable_syntax|First-class callable syntax]] (Created 2021-05-20) * [[rfc:readonly_properties_v2|Readonly properties 2.0]] (Created 2021-06-02) ==== PHP 8.0 ==== * [[rfc:shorter_attribute_syntax_change|Shorter Attribute Syntax Change]] (Created 2020-07-28) * [[rfc:phar_stop_autoloading_metadata|Don't automatically unserialize Phar metadata outside getMetadata()]] (Created 2020-07-07) * [[rfc:engine_warnings|Reclassifying engine warnings]] \\ Reevaluate the current level of various engine notices/warnings. (Created: 2019-08-27) * [[rfc:shorter_attribute_syntax|Shorter Attribute Syntax]] \\ Use ''@@'' instead of ''%%<<>>%%'' for attributes in PHP 8.0 (Created 2020-06-03) * [[rfc:magic-methods-signature|Ensure correct signatures of magic methods]] (Created 2020-04-05) * [[rfc:named_params|Named Arguments]]\\ This RFC proposes introducing named arguments. (Created 2013-09-06) * [[rfc:namespaced_names_as_token|Treat namespaced names as single token]] (Created 2020-06-16) * [[rfc:string_to_number_comparison|Saner string to number comparison]] \\ Proposes to change non-strict comparisons between strings and numbers to behave more reasonably. (Created: 2019-02-26) * [[rfc:saner-numeric-strings|Saner numeric strings]] (Created 2020-06-28) * [[rfc:nullsafe_operator|Nullsafe operator]] \\ Add new ?-> operator that skips null values (Created 2020-06-02) * [[rfc:trailing_comma_in_closure_use_list|Allow trailing comma in closure use lists]] (Created 2020-07-01) * [[rfc:throwable_string_param_max_len|Configurable string length in getTraceAsString()]] (Created 2020-06-27) * [[rfc:inheritance_private_methods|Remove inappropriate inheritance signature checks on private methods]] \\ Proposes that inappropriate inheritance checks are removed for private methods (Created: 2017-02-07) * [[rfc:match_expression_v2|Match expression v2]]\\ Introduce match expression (Created 2020-05-22) * [[rfc:attribute_amendments|Attribute Amendments]]\\ Group Syntax, Rename PhpAttribute, Target Validation, Repeatable (Created 2020-05-20) * [[rfc:stable_sorting|Make sorting stable]]\\ Make all sorts in PHP stable by default (Created 2020-05-12) * [[rfc:constructor_promotion|Constructor Property Promotion]] \\ Adds a short-hand syntax to combine declaration of properties and the constructor. (Created 2020-03-26) * [[rfc:attributes_v2|Attributes (v2)]] \\ Add structured metadata to declarations (classes, functions, properties, constants) for internal and userland use-cases. (Created 2020-03-09) * [[rfc:unbundle_xmlprc|Unbundle ext/xmlrpc]] \\ (Created 2020-04-25; Accepted 2020-05-26) * [[rfc:always_enable_json|Always available JSON extension]] \\ (Created 2020-04-29) * [[rfc:non-capturing_catches|Non-capturing catches]] \\ Allow catching exceptions without a variable (Created 2020-04-05) * [[rfc:mixed_type_v2|Mixed type v2]] \\ Add the mixed type (Created 2020-03-22) * [[rfc:locale_independent_float_to_string|Locale-independent float to string cast]] (Created 2020-03-11) * [[rfc:pdo_default_errmode|Change default PDO error mode]] (Created 2020-03-28) * [[rfc:arithmetic_operator_type_checks|Stricter type checks for arithmetic/bitwise operators]] (Created 2020-04-02) * [[rfc:add_str_starts_with_and_ends_with_functions|Add str_starts_with and str_ends_with to PHP]] (Created 2020-03-25) * [[rfc:trailing_comma_in_parameter_list|Allow trailing comma in parameter list]] (Created 2020-03-26) * [[rfc:throw_expression|throw expression]]\\ Convert throw statement into an expression (Created 2020-03-21) * [[rfc:token_as_object|Object-based token_get_all() alternative]]\\ Adds an object-based token_get_all() alternative, which is more ergonomic and uses less memory. (Created: 2020-02-13) * [[rfc:abstract_trait_method_validation|Abstract trait method validation]] \\ Enforce signature of abstract trait methods. (Created: 2020-02-07) * [[rfc:stringable|Stringable]] \\ Allow using ''string|Stringable'' to express ''string|object-with-%%__toString()%%''. (Created 2020-01-15) * [[rfc:class_name_literal_on_object|Allow ::class on objects]] \\ Adds support for ''$object::class''. (Created: 2020-01-09) * [[rfc:static_return_type|Static return type]] \\ Adds support for ''static'' as a return type. (Created: 2020-01-08) * [[rfc:variable_syntax_tweaks|Variable Syntax Tweaks]] \\ Fixes variable syntax edge cases. (Created: 2020-01-07) * [[rfc:union_types_v2|Union Types v2]] \\ A proposal to add union types (Created 2019-09-04) * [[rfc:dom_living_standard_api|DOM Living Standard API]] \\ Upgrade DOM API to latest standard version (Created: 2019-03-13) * [[rfc:lsp_errors|Always generate fatal error for incompatible method signatures]] \\ Resolve inconsistent handling of abstract and non-abstract methods during inheritance. (Created: 2019-04-08) * [[rfc:negative_array_index|Arrays starting with a negative index]] \\ Proposes to make implicit array keys consistent. (Created: 2017-04-20) * [[rfc:consistent_type_errors|Consistent type errors for internal functions]] \\ Consistently throw ''TypeError'' for parameter parsing failures of internal functions. (Created: 2019-02-05, Voting started: 2019-02-19) * [[rfc:jit|JIT]] \\ Just in Time Compiler. (Created: 2019-01-28) * [[rfc:weak_maps|Weak maps]] \\ Add a ''WeakMap'' class (Created: 2019-11-04) * [[rfc:str_contains|str_contains]] \\ Adds a new function to return whether or not a string is contained within another. (Created: 2020-02-17) * [[rfc:get_debug_type|get_debug_type]]\\ Adds a new function to return the true type name of a variable, automatically resolving class names. (Created: 2020-02-15) * [[rfc:add-cms-support|Add support for CMS]]\\ Exposes CMS API from OpenSSL (Created 2020-05-13) ==== PHP 7.4 ==== * [[rfc:deprecations_php_7_4|Deprecations for PHP 7.4]] \\ Functionality to be deprecated in PHP 7.4. (Discussion started: 2019-06-21) * [[rfc:deprecate_curly_braces_array_access|Deprecate alternate access to array elements and chars in string]] \\ Deprecate curly braces array and string syntax access. (Created: 2019-03-12; Discussion started:2019-03-15; Voting started: 2019-07-03; Voting ends: 2019-07-17; Accepted: 2019-07-17) * [[rfc:notice-for-non-valid-array-container| E_WARNING for invalid containers]] \\ Raise E_WARNING for array access on invalid containers (Created 2016-07-27) * [[rfc:base_convert_improvements|Base Convert improvements]] \\ Changes to base convert to warn the user when incorrect values are passed. Also allow negative numbers to be parsed. (Discussion started: 2019-05-18 | Accepted 2019-07-05) * [[rfc:numeric_literal_separator|Numeric Literal Separator]] \\ Enable improved code readability by supporting an underscore between digits in numeric literals. (Accepted: 2019-06-13) * [[rfc:covariant-returns-and-contravariant-parameters|Covariant Returns and Contravariant Parameters]] \\ (Announced: 2018-11-26; Voting began: 2018-12-19) * [[rfc:tostring_exceptions|Allow throwing exceptions from __toString()]] \\ Support throwing exceptions from %%__toString()%%. (Created: 2019-04-30) * [[rfc:spread_operator_for_array|Spread Operator in Array Expression]] \\ (Created: 2018-10-13) * [[rfc:ternary_associativity|Deprecate left-associative ternary operator]] \\ Deprecate nesting of ternaries without explicit use of parentheses. (Created: 2019-04-09) * [[rfc:arrow_functions_v2|Arrow functions 2.0]] \\ Adds short closures / arrow functions. * [[rfc:deprecate-and-remove-ext-interbase|Deprecate and remove ext/interbase]] \\ Deprecate and eventually remove the InterBase extension in the Core (Created 2019-03-22) * [[rfc:weakrefs|weakrefs]] \\ (Created: 2018-05-17, Voting started: 2019-02-22) * [[rfc:ffi|FFI - Foreign Function Interface]] \\ (Announced: 2018-12-06; Voting began: 2018-12-20; Accepted: 2019-01-09) * [[rfc:typed_properties_v2|Typed Properties 2.0]] \\ Add support for typed properties, including static properties and references to typed properties. (Created: 2018-06-15) * [[rfc:null_coalesce_equal_operator|Null Coalesce Equal Operator]] \\ Allow shorthand for self assigning null coalesce operator (Created 2016-03-09) * [[rfc:preload|Preloading]] \\ Preload PHP functions and classes once and use them in the context of any future request without overhead. (Created: 2018-10-18) * [[rfc:permanent_hash_ext|Always available hash extension]] \\ Proposes to make the hash extension available to every build of PHP. (Created: 04/09-2018) * [[rfc:password_registry|Password Hash Registry]] \\ Make the mechanisms used by password_hash/verify/etc... extensible by other modules. (Created: 2018-10-15) * [[rfc:improve-openssl-random-pseudo-bytes|Improve openssl_random_pseudo_bytes()]] \\ Proposes making ''openssl_random_pseudo_bytes()'' fail closed and deprecate the second parameter (Created: 2019-10-19) * [[rfc:mb_str_split|mb_str_split() Split multibyte string]] \\ (Announced: 2019-01-02; Voting began: 2019-01-10; Accepted: 2019-01-20; Implemented: 2019-02-12) * [[rfc:reference_reflection|Reflection for references]] \\ Introduces the ''ReflectionReference'' class to allow detecting references and determining reference equality. (Created: 2019-01-15; Voting began: 2019-01-30) * [[rfc:deprecate-and-remove-ext-wddx|Unbundle ext/wddx]] \\ (Announced: 2018-09-16; Voting began: 2019-01-17 Voting finished: 2019-01-31) * [[rfc:custom_object_serialization|New custom object serialization mechanism]] \\ Introduces new custom object serialization mechanism to replace ''Serializable''. (Created: 2019-01-24, Voting start: 2019-03-01) * [[rfc:concatenation_precedence|Change the precedence of the concatenation operator]] \\ Update the precedence of concatenation to be inferior to addition and subtraction (Created: 2019-03-28) * [[rfc:sodium.argon.hash|Argon2 support from sodium]] \\ Provide password_hash() support for argon2i/argon2id from ext/sodium if standard does not. (Created: 2019-04-05) * [[rfc:unbundle_recode|Unbundle ext/recode]] \\ (Discussion started: 2019-06-14; voting started: 2019-06-28; voting ends: 2019-07-12) * [[rfc:pdo_escape_placeholders|Escape PDO "?" parameter placeholder]] \\ Changes to PDO to allow using operators containing "?" with pdo_pgsql, most commonly the JSON key exists "?" operator. (Discussion started: 2019-05-31; Voting started: 2019-07-08; Accepted: 2019-07-22) ==== PHP 7.3 ==== * [[rfc: flexible_heredoc_nowdoc_syntaxes|Flexible Heredoc and Nowdoc Syntaxes]]\\ Allow indentation of, and remove newline requirement after, Nowdoc/Heredoc closing markers (Published: 2017-09-16, Accepted 2017-11-16) * [[rfc:trailing-comma-function-calls|Allow a trailing comma in function calls]] (Published 2017-10-07) * [[rfc:json_throw_on_error|JSON_THROW_ON_ERROR]] \\ Adds a flag to change the JSON extension's error-handling behaviour (Created: 2017-09-10) * [[rfc:pcre2-migration|PCRE2 Migration]] (Published 2017-10-16) * [[rfc:list_reference_assignment|list() Reference Assignment]]\\ This RFC proposes a new syntax to enable reference assignment with list(). (Created 2013/10/25, withdrawn 2014-05-15, Commandeered and Reopened: 2016-12-30, Accepted 2017-02-22) * [[rfc:is-countable|is_countable function]] (Created: 2018-01-21) * [[rfc:array_key_first_last|array_key_first(), array_key_last()]] \\ Add functions for handling the outer keys of an array (Created: 2018-06-11; Voting from 2018-07-09 to 2018-07-16) * [[rfc:compact|Make compact function reports undefined passed variables]] \\ (Created: 2018-05-24; Voting from 2018-06-06 to 2018-06-18) * [[rfc:argon2_password_hash_enhancements|Argon2 Password Hash Enhancements]] \\ (Created: 2018-01-11; Voting from 2018-06-06 to 2018-06-18) * [[rfc:image2wbmp|Deprecate and Remove image2wbmp()]] \\ (Created: 2018-05-11; Voting from 2018-05-26 to 2018-06-09) * [[rfc:case_insensitive_constant_deprecation|Deprecate and Remove Case-Insensitive Constants]] \\ Support for case-insensitive constants is deprecated and scheduled for removal in the next major version. * [[rfc:deprecations_php_7_3|Deprecations for PHP 7.3]] \\ Miscellaneous minor deprecations for PHP 7.3. * [[rfc:same-site-cookie|Same Site Cookie]] \\ Add same site flag to cookies created by core cookie functions (Created: 2017-07-16) ==== PHP 7.2 ==== * [[rfc:load-ext-by-name|Allow loading extensions by name]] (Created: 2016-05-10) * [[rfc:allow-abstract-function-override|Allow abstract function override]] \\ Allow redefinition of "abstract functions" (Created: 2017-03-01) * [[rfc::number_format_negative_zero|Prevent number_format() from returning negative zero]] \\ Bring consistency to number_format() for negative zero. (Created: 2017-04-01) * [[rfc:convert_numeric_keys_in_object_array_casts|Convert numeric keys in object/array casts]] \\ Fix an edge case in casting objects to arrays and vice-versa. (Created: 2016-10-21) * [[rfc:deprecate-bareword-strings|Deprecate and Remove Bareword (Unquoted) Strings]] \\ Raises the severity of "undefined constant" to E_WARNING and deprecates the fallback to interpreting as a string. (Created: 2017-01-29) * [[rfc:get_class_disallow_null_parameter|get_class() disallow null parameter]] \\ Prevent get_class() having astonishing behaviour * [[rfc:counting_non_countables|Counting of non-countable objects]] \\ Raise a warning when counting invalid objects. (Created: 2016-10-04) * [[rfc:parameter-no-type-variance|Parameter Type Widening]] \\ Allow subclasses to omit a type entirely (Created: 2016-11-21) * [[rfc:list-syntax-trailing-commas|Trailing commas in list syntax]]\\ Allow for trailing commas in all list syntax (Created 2015-11-03) * [[rfc:deprecate-png-jpeg-2wbmp|Deprecate png2wbmp() and jpeg2wbmp()]] \\ Deprecate and later remove the png2wbmp() and jpeg2wbmp() functions. (Created: 2016-10-15) * [[rfc:socket_getaddrinfo|Implement socket_getaddrinfo()]] \\ Implement getaddrinfo() to socket extension. (Created: 2016-08-08) * [[rfc:argon2_password_hash|Argon2 in password hash]] \\ Introduce Argon2 hashing algorithm to password functions (Created: 2016-07-10) * [[rfc:debugging_pdo_prepared_statement_emulation|Debugging PDO Prepared Statement Emulation]] \\ Allow the output of this feature to be examined in userland. (Created: 2016-10-17) * [[rfc:debugging_pdo_prepared_statement_emulation_v2|Debugging PDO Prepared Statement Emulation v2]] \\ Another approach to allowing the output of this feature to be examined in userland. (Created: 2016-11-17) * [[rfc:hash-context.as-resource|HashContext as Object]] \\ Change Hash Contexts to use Objects instead of Resources * [[rfc:deprecate-and-remove-intl_idna_variant_2003|Deprecate and remove INTL_IDNA_VARIANT_2003]] (Created: 2017-01-07) * [[rfc:extended-string-types-for-pdo|Extended String Types For PDO]] \\ Types to handle "national character," i.e. Unicode, string parameters. (Created: 2017-02-16) * [[rfc::improved-tls-constants|Improve TLS constants to sane values]] (Created 2017-05-15) * [[rfc:object-typehint|Object typehint]] \\ Proposes adding ''object'' type-hint and return-type (Created: 2016-08-12) * [[rfc:ldap_exop|LDAP EXOP]] \\ Provide functions to use LDAP extended operations in php-ldap (Created: 2017-06-26) * [[rfc:libsodium|Libsodium]] \\ Make Libsodium a Core Extension (Created 2016-01-07) * [[rfc:deprecations_php_7_2|Deprecations for PHP 7.2]] \\ Functions and features to be deprecated in PHP 7.2 (Created 2015-12-28) ==== PHP 7.1 ==== * [[rfc:session-id-without-hashing|Session ID without hashing]] \\ Remove hash usage from session ID generation. (Created 2016-04-06) * [[rfc:async_signals|Asynchronous Signal Handling]] \\ Asynchronous Signal Handling without TICKs and any additional overhead. (Created 2016-06-24) * [[rfc:this_var|Fix inconsistent behavior of $this variable]] \\ Fix all known inconsistencies related to special variable $this (Discussion began 2016-05-23) * [[rfc:too_few_args|Replace "Missing argument" warning with "Too few arguments" exception]] \\ (Created 2016-06-01) * [[rfc:nullable_types|Nullable Types]] \\ Allow a type check to be of some type or null (Discussion began 2016-04-13) * [[rfc:short_list_syntax|Square bracket syntax for array destructuring assignment]] \\ An alternative syntax to list() (Created 2016-04-07) * [[rfc:invalid_strings_in_arithmetic|Warn about invalid strings in arithmetic]] \\ Produce E_NOTICE or E_WARNING when using invalid numeric strings with arithmetic operators (Created 2016-01-08) * [[rfc:list_keys|Allow specifying keys in list()]] \\ Adds syntax to help unpacking associative arrays into variables (Created 2016-01-17) * [[rfc:iterable|Iterable]] \\ Iterable pseudo-type accepting arrays or objects implementing Traversable (Created 2016-06-10) * [[rfc: negative-string-offsets|Generalize support of negative string offsets]] \\ Add support for negative string offsets everywhere it makes sense (Created 2016-01-23) * [[rfc:closurefromcallable|Closure from callable function]] \\ Add a function to create closures from callables without reflection * [[rfc: deprecate_mb_ereg_replace_eval_option|Deprecate mb_ereg_replace eval option]] \\ This RFC aims at deprecating the e option that mb_ereg_replace and mb_eregi_replace provide. * [[rfc:mcrypt-viking-funeral|Deprecate (and remove) Mcrypt]] \\ Let's get rid of ext/mcrypt, which is abandonware and inhibits the growth of the language, as soon as humanly possible. (Created 2016-01-09) * [[rfc: openssl_aead|OpenSSL AEAD support]] \\ Adds support for AEAD cipher modes (GCM and CCM) to openssl_decrypt and openssl_encrypt. * [[rfc:void_return_type|Void Return Type]] \\ Adds a void return type to require that a function does not return a value. (Revived 2015-10-04, originally created 2015-02-14) * [[rfc:class_const_visibility|Class constant visibility modifiers]] \\ Introduce class constants visibility modifiers that mirror properties and methods. (Created 2015/09/13) * [[rfc:octal.overload-checking|Octal Overflow Protection]] \\ Stop quietly ignoring overflows in octal number parsing (Created: 2016-04-12) * [[rfc:rng_fixes|RNG fixes and changes]] \\ Fixes and improvements to the random number generation subsystems (Created 2016-06-14) * [[rfc::curl_http2_push|Add HTTP/2 Server Push support to ext/curl]] (Created 2015/10/01) * [[rfc:intl.timezone.get-windows-id|TimeZone::getWindowsID]] (Created (2016/03/15) * [[rfc:multiple-catch|Multi catch]] \\ Catching multiple exception types in a single catch statement (Created 2016/03/06) * [[rfc:forbid_dynamic_scope_introspection|Forbid dynamic calls to scope introspection functions]] (Created 2016-05-01) * [[rfc:new-curl-error-functions|Add curl_multi_errno(), curl_share_errno() and curl_share_strerror()]] (Created: 2016-04-29) * [[rfc:throw_error_in_extensions|Throw Error in Extensions]] \\ Convert E_ERROR and E_RECOVERABLE_ERROR to throw Error in extensions (Created 2016-06-14) * [[rfc:Precise float value|More precise float value handling]] \\ This RFC proposes more precise float value handling. * [[rfc:additional-context-in-pcntl-signal-handler|Additional Context in pcntl_signal Handler]] \\ Adds a second array argument to ''pcntl_signal'' handler (Created 2016-06-14) * [[rfc:session-create-id|Add session_create_id()]] \\ Add session_create_id() function (Created 2016-04-07) * [[rfc:session-gc|Add session_gc()]] \\ Add session_gc() function (Created 2016-04-06) ==== PHP 7.0 ==== * [[rfc:Random-Function-Exceptions|Random Functions throwing Exceptions]] \\ This RFC proposes that the random_* functions should throw exceptions on failure. * [[rfc:throwable-interface|Throwable Interface]] \\ Proposes a modification to the exception hierarchy for PHP 7, introducing a Throwable interface and Error class. * [[rfc:context_sensitive_lexer|Context Sensitive Lexer]]\\ Proposal to have a context sensitive lexer for PHP with support for semi-reserved words (Created 2015-02-15) * [[rfc:preg_replace_callback_array|Add preg_replace_callback_array function]]\\ A RFC proposing each pattern can easily have a specific callback. * [[rfc:easy_userland_csprng|Reliable User-land CSPRNG]]\\ A proposal to add a reliable CSPRNG (Created 2015-02-20) * [[rfc:anonymous_classes|Anonymous Class Support]]\\ This RFC proposes support for anonymous classes. * [[rfc:generator-delegation|Generator Delegation]] \\ This RFC proposes new syntax to delegate generator function operations to sub-iterators/generators (Created 2015-03-01) * [[rfc:reserve_more_types_in_php_7|Reserve More Type Names in PHP 7]] \\ Reserves ''int'', ''float'', ''string'', ''bool'', ''true'', ''false'' and ''null'' in class names or namespaces. (Created 2015-02-18) * [[rfc:internal_constructor_behaviour|Constructor behaviour of internal classes]]\\ Cleanup undesirable behaviour of constructors internal classes. (Created 2015-03-01) * [[rfc:reclassify_e_strict|Reclassify E_STRICT notices]]\\ This RFC proposes to reclassify our few existing E_STRICT notices to different categories. (Created 2015-02-22) * [[rfc:remove_php4_constructors|Remove PHP 4 Constructors]]\\ Stop recognizing methods with the same name as the defining class as constructors. (Created 2014-11-17; Voting closed 2015-03-10) * [[rfc:date.timezone_warning_removal|Remove the date.timezone warning]] \\ (Created 2015-01-27) * [[rfc:combined-comparison-operator|Combined Comparison (Spaceship) Operator]] \\ Proposes a new comparison operator, ''%%<=>%%'' (Created 2014-02-12, revived 2015-01-19) * [[rfc:php7_foreach|Fix "foreach" behavior]] \\ The RFC defines foreach statement behavior for the cases where is wasn't defined before and implementation provided inconsistent results. (Created 2015-01-29) * [[rfc:removal_of_dead_sapis_and_exts| Removal of dead SAPIs and extensions]]\\ Consideration about removing the unsupported SAPIs and extensions with unsupported dependencies. * [[rfc:remove_deprecated_functionality_in_php7|Remove deprecated functionality in PHP 7]]\\ Proposes to remove functionality that has been deprecated in the PHP 5.x cycle in PHP 7. (Created 2014-09-11) * [[rfc:jsond|Jsond]] \\ Whether jsond should replace the current json extension. (Created 2015-01-11) * [[rfc:json_preserve_fractional_part|Preserve Fractional Part in JSON encode]] \\ Adds a new option for JSON encode to preserve fractional part on float numbers. * [[rfc:return_types|Return Type Declarations]]\\ Adds return types to functions, methods and closures. (Created 2014-03-20) * [[rfc:fast_zpp|Fast Parameter Parsing API]]\\ Fast API in addition to zend_parse_parameters(). (Created 2014-05-23) * [[rfc:unicode_escape|Unicode Codepoint Escape Syntax]]\\ Adds an escape sequence syntax for Unicode codepoints to string literals. (Created 2014-11-24) * [[rfc:native-tls|Native TLS]]\\ Native TLS for internal globals in TS mode * [[rfc:isset_ternary|Null Coalesce Operator]]\\ Adds the coalesce operator, ''??'' * [[rfc:integer_semantics|Integer Semantics]]\\ Improves cross-platform consistency in PHP for some operations dealing with integers * [[rfc:zpp_fail_on_overflow|ZPP Failure on Overflow]]\\ Make ''zend_parse_parameters'' fail if a float value out of bounds, or NaN, is passed where an integer is expected. (Created 2014-09-22) * [[rfc:phpng|Move the phpng branch into master]]\\ Embrace the phpng codebase as the basis for the future major version of PHP. (Created 2014-07-20) * [[rfc:abstract_syntax_tree|Abstract Syntax Tree]]\\ Proposes the introduction of an Abstract Syntax Tree (AST) as an intermediary structure in our compilation process. * [[rfc:uniform_variable_syntax|Uniform Variable Syntax]]\\ Introduces an internally consistent and complete variable syntax. * [[rfc:size_t_and_int64_next|64 bit platform improvements for string length and integer]]\\ Integer and String modifications for full 64 bit support * [[rfc:closure_apply|Closure::call]]\\ Proposes a new method on the ''Closure'' class to allow calling bound to an object without pre-binding * [[rfc:fix_list_behavior_inconsistency|Fix list() behavior inconsistency]]\\ Enable or disable string handling in list() operator * [[rfc:remove_alternative_php_tags|Remove alternative PHP tags]]\\ Removes ASP and script tags * [[rfc:switch.default.multiple]]\\ Disallow multiple defaults in switch statements * [[rfc:catchable-call-to-member-of-non-object|Catchable "call to a member function of a non-object"]]\\ Turns this fatal error into E_RECOVERABLE (Created 2014-04-26) * [[rfc:secure_unserialize|Filtered unserialize()]]\\ Add option to ignore all or some objects to unserialize() (Created 2013/03/30) * [[rfc:intl.char|ICU IntlChar class]]\\ Adds an IntlChar class an intl_char_*() functions to the Intl extension. * [[rfc:session-lock-ini|Introduce session_start() INI options as array]]\\ Introduce session_start() options * [[rfc:remove_hex_support_in_numeric_strings|Remove hex support in numeric strings]] \\ Removes support for hexadecimal numbers in numeric string conversions. (Created 2014-08-19) * [[rfc:expectations|Expectations]]\\ This RFC proposes adding BC zero-cost assertions. (Created 2013-11-01) * [[rfc:group_use_declarations|Group Use Declarations]] \\ The RFC adds improvements to current PHP namespace implementation by introducing group use declarations. (Created 2015-01-28) * [[rfc:engine_exceptions_for_php7|Exceptions in the engine]]\\ This RFC proposes to allow the use of exceptions in the engine. (Created 2014-09-30) * [[rfc:generator-return-expressions|Generator Return Expressions]] \\ This RFC proposes the ability to specify and access return values from Generator functions * [[rfc:scalar_type_hints_v5|Scalar Type Hints v0.5]] \\ This RFC proposes a mixed-mode scalar type system * [[rfc:continue_ob|Continue output buffering]] \\ Let the output buffer stack be usable despite an aborted connection * [[rfc:intdiv|intdiv()]]\\ This RFC proposes adding an intdiv() function for integer division. (Created 2014-07-15) * [[rfc:session.user.return-value|Fix handling of custom session handler return values]]\\ Make false actually mean failure, not success. * [[rfc:gc_fn_pointer|Turn gc_collect_cycles into function pointer]] \\ Proposes to turn gc_collect_cycles into function pointer for extensions to hook into. (Created 2012-12-11) ==== PHP 5.6 ==== * [[rfc:debug-info|__debugInfo() magic method]]\\ Support get_debug_info hook for userspace classes * [[rfc:pow-operator|Exponential operator]]\\ Exponential operator * [[rfc:use_function|Importing namespaced functions]]\\ Proposes to allow importing namespaced functions through a new `use function` sequence. * [[rfc:const_scalar_exprs|Constant Scalar Expressions (with constants)]]\\ This RFC proposes adding support for Constant Scalar Expressions with support for constants being operands. * [[rfc:incompat_ctx|Remove calls from incompatible context]]\\ Calls from incompatible context deprecated in 5.6 (will be removed in next version). * [[rfc:variadics|Dedicated syntax for variadic functions]]\\ This RFC introduces a dedicated syntax for variadic functions. * [[rfc:argument_unpacking|Argument unpacking]]\\ This RFC proposes a syntax for argument unpacking. * [[rfc:operator_overloading_gmp|Internal operator overloading and GMP improvements]]\\ Add support for operator overloading in internal classes and improve GMP using it * [[rfc:phpdbg|phpdbg]]\\ Distribute phpdbg with PHP, a PHP debugger * [[rfc:slim_post_data|Slim POST data]]\\ Use a temp PHP stream for HTTP payload. * [[rfc:crypt_function_salt|Crypt() function salt]]\\ This RFC proposes changing crypt() function's salt parameter treatment. * [[rfc:fpm_change_hat|Apparmor change_hat functionality for php-fpm]]\\ Proposes to add the possibility to change to a different hat under the apparmor LSM * [[rfc:tls-peer-verification|TLS Peer Verification]]\\ Enable peer verification by default for encrypted client streams. * [[rfc::improved-tls-defaults|Improved TLS Defaults]]\\ Implement more secure defaults for encrypted stream transfers * [[rfc:default_encoding|Default character encoding]]\\ Default character encoding handling in PHP. * [[rfc:pack_unpack_64bit_formats|64 bit format codes for pack() and unpack()]]\\ Adds format codes for converting 64 bit integers to and from binary strings. * [[rfc:timing_attack|Timing attack safe string comparison function]]\\ New function to perform time-constant string comparison (Created 2013/12/22) ==== PHP 5.5 ==== * [[rfc:generators|Generators]]\\ This RFC proposes adding generators as a simple and boilerplate-free way of defining iterators. * [[rfc:finally|support finally keyword]]\\ Add try catch finally supporting * [[rfc:class_name_scalars|Resolve class names to scalars via class keyword]]\\ A proposal to use ::class after type names to resolve FQ class names as scalar * [[rfc:foreachlist|foreach_variable supporting T_LIST]]\\ This extends PHP's language parser to support T_LIST in foreach_variable * [[rfc:constdereference|Const array/string dereference]] \\ A little improvement to make things consistent * [[rfc:empty_isset_exprs|Allow arbitrary expression arguments to empty() and isset()]]\\ Proposes to allow ''empty(getArray())'' etc. * [[rfc:optimizerplus|Integrating Optimizer+ into the PHP distribution]]\\ This RFC proposes to integrate the Zend Optimizer+ opcode cache into the PHP distribution * [[rfc:hash_pbkdf2|Adding hash_pbkdf2 function]]\\ This RFC proposes adding a hash_pbkdf2 function to the hash package * [[rfc:password_hash|Add Simplified Password Hashing]]\\ This RFC proposes adding 3 new functions to the core to expose a much simplified password hashing API. * [[rfc:remove_preg_replace_eval_modifier|Remove preg_replace /e modifier]]\\ This RFC aims at deprecating and subsequently removing the /e modifier (PREG_REPLACE_EVAL) that preg_replace provides. * [[rfc:uconverter|Add UConverter]]\\ A proposal to add ICU::UConverter functionality to ext/intl * [[rfc:mysql_deprecation|ext/mysql deprecation]]\\ Formally deprecating ext/mysql in PHP. * [[rfc:cookie_max-age|Cookie Max-Age attribute]]\\ Cookie Max-Age attribute * [[rfc:curl-file-upload|Fix cURL file uploading API]]\\ Fix insecure cURL file uploading API * [[rfc:sendrecvmsg|Add recvmsg() and sendmsg() to ext/sockets]]\\ Wrap sendmsg() and recvmsg(), with support for a limited number of message types * [[rfc:cli_process_title|PHP CLI changing process title support]]\\ Setting PHP CLI process titles for visibility in 'top' or 'ps' * [[rfc:foreach-non-scalar-keys|Allow non-scalar keys in foreach]]\\ This RFC proposes to remove the type restrictions on foreach iteration * [[rfc:array_column|Add array_column() function]]\\ This RFC proposes a new array function that returns the values of the specified column from a multi-dimensional array. * [[rfc:curl-wrappers-removal-rfc|Removal of curl-wrappers]]\\ This RFC is about removing the curl stream wrappers of the PHP as of 5.5 and to move it on PECL for any eventual improvements. * [[rfc:strict_sessions|Strict Sessions]]\\ This RFC proposes an additional security measure for preventing session fixation. ==== PHP 5.4 ==== Note: Many RFCs in this list have been [[todo:php54:vote|mass voted]]. * [[rfc:instance-method-call|Instantiating a class and calling methods/accessing properties on same command]]\\ A proposal to add support to instantiating a class and calling its methods or accessing its properties on same command. * [[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:closures:object-extension|Closures: Object Extension]]\\ How to extend closures to work with $this and objects. * [[rfc:shortsyntaxforarrays|Short syntax for arrays]]\\ This RFC will discuss an language enhancement for simple and easy array definition. * [[rfc:functionarraydereferencing|Function array dereferencing]]\\ You know, like foo()['bar'] * [[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:indirect-method-call-by-array-var|Indirect method call by array variable]]\\ $arr = array('Class', 'method'); $arr(); * [[rfc:binnotation4ints|Supporting Binary Notation for Integers]]\\ This extends PHP's syntax to support binary notation for integers just as it already does for decimal, octal, and hexadecimal representations. * [[rfc:builtinwebserver|Built-in web server]]\\ This RFC discusses the web server that is built into PHP itself, for development purpose. * [[rfc:removal-of-deprecated-features|Removal of deprecated features]]\\ RFC about removing legacy features in the next version of PHP * [[rfc:improved-parser-error-message|Improve parser error messages]]\\ Improve parser error message readability. * [[rfc:session_upload_progress|Session upload progress]]\\ Using sessions to provide upload progress feedback to users. * [[rfc:session-oo|Object oriented session handlers]]\\ A proposal to allow session_set_save_handler() to accept an object, and expose the original session handler. * [[rfc:allow_multiple_simultaneous_syslog_connections|Allow Multiple Simultaneous Syslog Connections]]\\ This RFC propose enhancement to syslog function in order to allow multiple simultaneous connections by using resources. * [[rfc:streammetadata|Stream meta-data]]\\ RFC defines handler for setting metadata on stream URL. * [[rfc:error-formatting-for-developers|Error message formatting for development]]\\ This RFC discusses error message formatting to aid developers. * [[rfc:performanceimprovements|Zend Engine Performance Improvements]]\\ Proposes Zend Engine changes which together make up to 20% performance improvement on synthetic benchmarks and some real-life applications * [[rfc:runtimecache|Run Time Cache]]\\ offers an implementation of run-time caching technique which may improve performance of repeatable code * [[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:dtrace|DTrace Probes for PHP]]\\ Provide DTrace probes for PHP. * [[rfc:new-output-api|New Output API]]\\ An RFC about the New Output API * [[rfc:callable|Callable type hint]]\\ Callable type hint * [[rfc:ldap_modify_batch|LDAP: Add ldap_modify_batch]] \\ This RFC proposes adding a lower-level modification function to the LDAP extension. ==== PHP 5.3 ==== * [[rfc:closures|Closures]]\\ This RFC proposes Closures and lambda functions for PHP. * [[rfc:namespaceresolution|Namespace resolution order]] * [[rfc:namespaceseparator|RFC on what namespace separator to choose]] * [[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:lsb_parentself_forwarding|LSB parent::/self:: forwarding]]\\ Changes how parent:: and self:: work with LSB by making them forwarding. * [[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: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:rounding|Rounding in PHP]]\\ Make round() produce predictable results on all platforms and fix some problems in the process. * [[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 * [[rfc:fpm|FPM SAPI]]\\ This RFC discusses FPM SAPI and its inclusion to the core PHP distribution. * [[rfc:fpm:ini_syntax|FPM INI syntax]]\\ This RDV discusses the replacement of FPM configuration file from XML to INI. * [[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:array_count_handlers|count_elements handler vs count()]]\\ Internal change to allow some optimization and add consistency. ===== Declined ===== * [[rfc::integer-rounding|Rounding Integers as int]] (Created 2023-09-26, Voting ends: 2024-04-02) * [[rfc::final_by_default_anonymous_classes|Final by default anonymous classes]] (Created 2023-12-23, Discussion started: 2023-12-23, Voting started: 2024-01-15) * [[rfc::final_anonymous_classes|Final anonymous classes]] (Created 2023-11-15) * [[rfc::change_the_edge_case_of_round|Change the edge case of round()]] (Created 2023-10-23) * [[rfc::tempnam-suffix-v2|Support optional suffix parameter in tempnam]] (Discussion started: 2023-08-08; Voting ends: 2023-09-10) * [[rfc:interface-default-methods|Interface Default Methods]] (Created 2022-06-27, Discussion started: 2023-06-14, Voting start: 2023-07-02) * [[rfc:php_technical_committee|PHP Technical Committee]] (Voting started: 2023-04-28) * [[rfc:include_cleanup|include cleanup]] (Created 2023-01-18) * [[rfc:asymmetric-visibility|Asymmetric visibility]] (Created 2022-08-05) * [[rfc:destructuring_coalesce|Destructuring Coalesce]] (Created 2022-10-16, Voting opened: 2022-11-07) * [[rfc:curl-url-api|New Curl URL API]] (Created 2022-06-21, Voting opened: 2022-07-04) * [[rfc:json_encode_indentation|json_encode indentation]] (Created 2021-06-03, Voting opened: 2022-07-04) * [[rfc:auto-capture-closure|Short Closures 2.0]] (Created 2021-03-22, Voting opened: 2022-07-01) * [[rfc:global_login|Create a global login experience for PHP.net]] (Created 2022-05-23) * [[rfc:stricter_implicit_boolean_coercions|Stricter implicit boolean coercions]] (Created 2022-05-16) * [[rfc:sealed_classes|Sealed Class]] ( Created 2021-04-24 ) * [[rfc:random_ext|Move to RNG functions into ext/random]] (Created 2021-09-07) * [[rfc:user_defined_operator_overloads|User-Defined Operator Overloads]] (Created 2021-08-14) * [[rfc:array_column_results_grouping|PHP RFC: Add array_group function]] ( Created 2021-11-28 ) * [[rfc:nullable_intersection_types|Nullable intersection types]] (Created 2021-07-22 ) * [[rfc:is_literal|Is literal]] \\ Allow developers/frameworks to check if variable is safe (created by literals); ref SQL/Command/HTML Injection. (Created 2020-03-21) * [[rfc:pipe-operator-v2|Pipe Operator V2]] Syntax for creating native function pipelines (Created: 2020-04-20) * [[rfc:partial_function_application|Partial Function Application]] \\ Add syntax for partially applying functions * [[rfc:cachediterable|ImmutableIterable (rewindable, iterable, memory-efficient, allows any key&repeating keys)]] (Created 2021-02-06) * [[rfc:short-functions|Short functions]] (Created 2020-09-26) * [[rfc:enum_allow_static_properties|Allow static properties in enums]] (Created 2021-05-17) * [[rfc:direct-execution-opcode|OPCache direct execution opcode file without php source code file]] (Created 2020-11-13) * [[rfc:object_scope_prng|Object scoped RNG Implementations]] (Created 2020-12-20) * [[rfc:any_all_on_iterable|PHP\iterable\any() and all() on iterables]] (Created 2020-08-30) * [[rfc:readable_var_representation|var_representation() : readable alternative to var_export()]] (Created 2021-01-21) * [[rfc:readline_interactive_shell_result_function|Dump results of expressions in `php -a`]] (Created 2020-12-19) * [[rfc:php_namespace_policy|PHP Namespace Policy]] \\ Reserves the use of the \PHP and \Ext namespaces for zend and core extensions. (Created 2020-04-15) * [[rfc:stack-frame-class|StackFrame class]] \\ debug_backtrace alternative as an array of StackFrame objects (Created 2020-07-07) * [[rfc:make_ctor_ret_void|Make constructors and destructors return void]] (Created 2020-06-17) * [[rfc:rename-double-colon-token|Rename T_PAAMAYIM_NEKUDOTAYIM to T_DOUBLE_COLON]] (Created 2020-04-11) * [[rfc:opcache.no_cache|Opcache optimization without any caching]]\\ ini setting ''opcache.allow_cache=0'' for opcache optimization without any caching (Created 2020-05-16) * [[rfc:php-namespace-in-core|PHP Namespace in core]] \\ Allows the use of the \PHP namespace in core (Created 2020-03-25) * [[rfc:match_expression|Match expression]]\\ Introduce match expression to address shortcomings of switch (Created 2020-04-12) * [[rfc:typecast_array_desctructuring|Type casting in array destructuring expressions]] \\ Adds the possibility to cast values while using array or list destructuring expressions (Created 2020-03-25) * [[rfc:compact-object-property-assignment|Compact Object Property Assignment]] \\ Pseudo object literals (Created 2020-03-10) * [[rfc:userspace_operator_overloading|Userspace Operator overloading]]\\ Allow users to overload operators (+, -, etc.) in their own classes (Created 2020-02-01) * [[rfc:request_response|Server-Side Request and Response Objects]]\\ This RFC proposes request and response objects that are wrappers for existing global PHP variables and functions, with some limited additional convenience functionality. (Created: 2016-21-21, revised 2020-02-10) * [[rfc:write_once_properties|Write-Once Properties]] \\ Add support for a new property modifier that would allow properties to be initialized, but not modified afterwards. (Created: 2020-02-18) * [[rfc:use_global_elements|declare(function_and_const_lookup=global)]] \\ Support skipping checking for global functions/consts in the current namespace before the global namespace. (Discussion started: 2020-01-01) * [[rfc:deprecate-backtick-operator-v2|Deprecate Backtick Operator v2]] \\ (Created: 2019-10-04) * [[rfc:object-initializer|Object initializer]] \\ Add object initializer block to instantiate and initialize object in single expression (Created: 2019-09-03) * [[rfc:deprecate_php_short_tags_v2|PHP RFC: Deprecate short open tags, again]] \\ Deprecate PHP's short open tags once again (Created: 2019-07-23, Announced: 2019-07-23; Voting: 2019-08-06 until 2019-08-20;) * [[rfc:add_str_begin_and_end_functions|Add str_starts_with(), str_ends_with() and related functions]] \\ Add functions to check if a string starts with, or ends with, a given substring. (Created 2016-08-01) * [[rfc:iterable-stdclass|Making stdClass iterable]] \\ (Created: 2019-01-12; Voting began: 2019-02-04) * [[rfc:iterable_to_array-and-iterable_count|iterable_to_array() and iterable_count()]] \\ Add iterable_to_array() and iterable_count() functions (iterator_to_array() and iterator_count() siblings) that work with iterables (Created: 2018-06-20, Vote started: 2018-07-03) * [[rfc:object-comparison|User-defined object comparison]] \\ Object comparison using //%%__compareTo%%// and //%%__equals%%// (Created: 2018-06-26) * [[rfc:friend-classes|Class Friendship]] \\ A proposal to add class friendship (Created 2018-06-27) * [[rfc:implement_sqlite_openblob_in_pdo|Implement SQLite "openBlob" in PDO]] (Created: 2017-09-26) * [[rfc:uuid|UUID]] \\ Proposes to include a native immutable UUID value object (Created: 2017-05-25) * [[rfc:unary_null_coalescing_operator|Unary null coalescing operator]] \\ Proposes a unary form of the null coalescing operator. (Created: 2017-06-21) * [[rfc:doxygen|Doxygen]] \\ Start documenting the PHP C sources with Doxygen comments (Created: 2017-05-30) * [[rfc:binary_string_deprecation|Binary String Deprecation]] \\ Proposes the deprecation of the b prefix and binary cast (Created: 2016-12-11) * [[rfc:throwable-code-generalization|Throwable code's type generalization]] \\ Change Throwable::getCode() & co. so that they can be of any type (Created: 2016-12-18) * [[rfc:user_defined_session_serializer|User defined session serializer]] \\ Implement user defined session serializer interface (Created: 2016-11-17) * [[rfc:php_engine_constant|Add PHP Engine Identifier Constant]] (Created 2016/02/03) * [[rfc:add_validate_functions_to_filter|Add validation functions to filter module]] \\ Add functions suitable for input validations. (Created 2016-08-03) * [[rfc:escaping_operator|New operator for context-dependent escaping]] \\ New operator for HTML escaping and other contexts. (Created 2016-07-14) * [[rfc:session-use-strict-mode|Enable session.use_strict_mode by default]] \\ Enable session.use_strict_mode by default. (Created 2016-07-05) * ''[[rfc:var_type|var_type()]]'' \\ Successor for ''gettype()'' function (Created: 2016-06-25) * ''[[rfc:var_info|var_info()]]'' \\ Extended version of ''var_type()'' function (Created: 2016-06-26) * [[rfc:ReflectionTypeImprovements]] \\ Improve ReflectionType's support for nullable and named types. * [[rfc:typed-properties|Typed Properties]] \\ Allow class properties to be typed (Created 2016-03-16) * [[rfc:union_types|Union Types]]\\ A proposal to add union types (Discussion began 2016-04-13) * [[rfc:callable-types|Callable prototypes]] \\ Callable prototypes (Created 2015-08-27) * [[rfc:functional-interfaces|Functional Interfaces]] \\ Functional Interfaces (Created 2016-04-17) * [[rfc:attributes|PHP Attributes]] \\ Native support for annotation (Discussion began 2016-04-22) * [[rfc:var_deprecation|''var'' Deprecation]] \\ Deprecating ''var'' in favor of ''public'' (Created 2016-03-10) * [[rfc:script_only_include|Introduce script only require/include ]] \\ Introduce script only include/require to prevent script inclusion. (Created 2015-02-10) * [[rfc:precise_session_management|Precise Session Management]]\\ Make session management precise. (Created 2015/03/21 ) * [[rfc:number_format_separator|Number Format Separator]] \\ Enable for numerical literals to be formatted for better readability (Created 2015-12-20) * [[rfc:json_numeric_as_string|JSON numeric as string]]\\ Proposes new options for dealing with the JSON number conversion problem by converting data to string. * [[rfc:in_operator|In Operator]] \\ This RFC proposes a new operator for contains checks. * [[rfc:coercive_sth|Coercive Scalar Type Hints]]\\ A proposal to add user-land coercive scalar type hints, and change internal function behavior to align with them (Created 2015-02-21) * [[rfc:variadic_empty|Make empty() a Variadic]]\\ A proposal to make empty() accept any number of arguments (Created 2015-02-20) * [[rfc:error_handler_callback_parameters_passed_by_reference|Allow error_handler callback parameters to be passed by reference]] \\ (Created 2015-01-26) * [[rfc:pecl_http|pecl_http]]\\ Whether to add pecl_http v2 to the core * [[rfc:skipparams|Skipping optional parameters]] \\ Skipping optional parameters in function calls (Created 2012-04-13) * [[rfc:php57|PHP 5.7]] \\ Proposes a final minor version of PHP 5, PHP 5.7, with no new features but added deprecation notices. (Created 2014-12-15) * [[rfc:objkey|Using objects as keys]]\\ Allows to use objects as keys for arrays. (Created 2014-10-26) * [[rfc:abstract_final_class|Abstract final classes / Static classes]]\\ Language enhancement to support "abstract final classes" or "static classes". (Created 2014-11-26) * [[rfc:aliases_by_reflection|Access to aliases definition by reflection]] \\ Extends reflection for a getDefinedAliases() methods. (Created 2014/10/09) * [[rfc:safe_cast|Safe Casting Functions]]\\ Adds a set of safe casting functions for scalar types (Created 2014-10-21) * [[rfc:loop_or|Loop + or control structure]]\\ Adds a default block to loops to be executed in the event that the loop is never entered. * [[rfc:bare_name_array_literal|Bare Name Array Literal]]\\ A shorter new syntax for array key-value pairs (Created 2014-06-01) * [[rfc:bare_name_array_dereference|Bare Name Array Dereference]]\\ A shorter new syntax for dereferencing arrays with string keys (Created 2014-06-01) * [[rfc:arrayof|Array Of]]\\ Proposed syntax for Type-Hinting against the contents or an array (Created 2014/01/15) * [[rfc:secure-html-escape|Improve HTML escape]]\\ This RFC proposes more secure HTML escape by escaping "/" (Vote period: 2014/02/16 - 2014/02/22) (Created 2014/02/02) * [[rfc:multibyte_char_handling|Multibyte Char Handling]]\\ This RFC proposes the way to handle multibyte chars. (Created 2014/01/16) * [[rfc:altmbstring|Alternative mbstring implementation using ICU]]\\ A proposal to completely rewrite mbstring extension with ICU. (Created 2011/04/06) * [[rfc:size_t_and_int64|64 bit platform improvements for string length and integer]]\\ Integer and String modifications for full 64 bit support * [[rfc:alpanumeric_decrement|Alphanumeric Decrement]]\\ This will add support for decrementing alphanumeric strings (“ab”, for example) to complement the existing incrementing behaviour. (Created 2013/12/16) * [[rfc:engine_exceptions|Exceptions in the engine]]\\ This RFC proposes to allow the use of exceptions in the engine. (Postponed to PHP 6.) * [[rfc:keywords_as_identifiers|Extended keyword support]]\\ This RFC proposes to widen keyword support. * [[rfc:instance_counter|Class instances counter]]\\ This RFC proposes a new function returning a list with class names and their instance counter. * [[rfc:trailing-comma-function-args]]\\ Allow a trailing comma in function calls, similar to array declarations * [[rfc:array_part|Add an array_part() function]]\\ Adds a function to extract multi-dimensional slices * [[rfc:splclassloader|SplClassLoader]]\\ Merge implementation of first proposal of PHP Standards Recommendation (PSR) into SPL core * [[rfc:annotations|Annotations]]\\ Class Metadata feature (aka Annotations) support in PHP * [[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:NonBreakableTraits|Non-breakable Traits]]\\ This RFC is a extension to the basic proposal. It includes the notion of trait-local methods and properties. * [[rfc:functiongetentropy|Function getEntropy]]\\ Feature request for a new userspace function providing a truly random value. * [[rfc:propertygetsetsyntax-v1.2|Property Accessors Syntax]]\\ RFC for the addition of C#-style get/set accessors to PHP * [[rfc:propertygetsetsyntax-alternative-typehinting-syntax|Alternative typehinting syntax for accessors]]\\ Proposes an improved typehinting syntax for the accessors proposal. * [[rfc:automatic_property_initialization|Automatic Property Initialization]]\\ This RFC proposes automatic assignments of constructor arguments to properties. (Created 2013/09/27) * [[rfc:default_ctor|Default parent constructors]] \\ The RFC proposes that the parent constructors, destructors and clone operations were always callable even if not defined in parent class. (Created 2014-11-05) ===== Withdrawn ===== * [[rfc:access_scope_from_magic_accessors|Access Scope from Magic Accessors]] (Created: 2023-01-19) * [[rfc:clamp|Clamp]] \\ Add new function clamp, which clamps a value inside a bound. (Created: 2021-06-23) * [[rfc:code_optimizations|Code optimizations]] (Created 2023-03-01) * [[rfc:auto-implement_stringable_for_string_backed_enums|Auto-implement Stringable for string backed enums]] (Created 2022-06-21) * [[rfc:arbitrary_string_interpolation|Arbitrary string interpolation]] (Created 2022-03-17) * [[rfc:null_coercion_consistency|NULL Coercion Consistency]] ( Created 2022-04-05 ) * [[rfc:parse_str_alternative|Add parse_query_string as an alternative to parse_str]] (Created 2021-06-23) * [[rfc:instanceof improvements|instanceof improvements]] \\ Allow more ways to use ''instanceof'' (Created 2020-05-17) * [[rfc:increment_decrement_fixes|Increment/Decrement Fixes]] \\ Fix some inconsistent cases of ++ and -- behaviour (Created 2020-03-01) * [[rfc:foreach_unwrap_ref|Unwrap reference after foreach]] (Created: 2021-08-13) * [[rfc:consistent_callables|Consistent callables]]\\ Consistent Callables (Created 2015-09-28) * [[rfc:never_for_parameter_types|Never for Parameter Types]] (Created: 2021-08-14) * [[rfc:deprecate_ticks|Deprecate ticks]] (Created 2021-05-11) * [[rfc:debug_backtrace_depth|debug_backtrace_depth(int $limit=0): int]] (Created 2021-03-13) * [[rfc:println|println(string $data=""): int]] (Created 2021-03-13) * [[rfc:reserve_keywords_in_php_8|Reserve keywords in PHP 8]] (Created 2020-06-13) * [[rfc:locked-classes|Locked Classes]] \\ Allows classes to block dynamically adding and removing properties from their instances (Announced 2019-03-10) * [[rfc:trailing_whitespace_numerics|Trailing whitespace in numeric strings]] \\ Proposes to permit trailing whitespace in numeric strings. (Superseded by [[rfc:saner-numeric-strings|PHP RFC: Saner numeric strings]]) * [[rfc:switch-expression-and-statement-improvement|Switch Expression and Switch Statement Improvement]] \\ Extend switch statement and introduce switch expression (Created: 2019-09-26) * [[rfc:language-constructs-syntax-changes|Language Constructs Syntax Changes]] \\ Allow skip parentheses for declare and halt compiler (Created 2020-07-04) * [[rfc:strict_operators|Strict operators directive]] \\ Strict type-checking for operators (Created: 2019-05-25, Discussion started: 2019-06-25) * [[rfc:switch_expression|Switch expression]] (Created 2020-03-28) * [[rfc:calls_in_constant_expressions|Allow function calls in constant expressions]] \\ (Created 2020-02-20) * [[rfc:implement-strrstr-for-consistency|Implement strrstr for consistency]]\\ Add strrstr and strristr for consistency in standard library (Created: 2019-06-20; Discussion started: 2019-06-20; Withdrawn: 2019-07-03) * [[rfc:pdo_float_type|PDO Float Type]] \\ New parameter type to represent floating point values. (Created: 2017-04-05) * [[rfc:array_change_keys|array_change_keys()]] \\ Add method to simplify re-keying an array (Created 2016-05-29) * [[rfc:continue_on_switch_deprecation|Deprecate and remove continue targeting switch]] \\ Support for continue acting on switch is deprecated and scheduled for removal in the next major version. * [[rfc:json_encode_decode_errors|JSON failure warnings]] \\ Raise warnings for json_encode() and json_decode() issues (Created: 2017-07-28) * [[rfc:namespaces-in-core|Namespaces in Core]] \\ Proposal to allow namespaces in PHP core (Created: 2017-06-03) * [[rfc:wddx-deprecate-class-instance-deserialization|Deprecate class instance deserialization in WDDX]] \\ Proposal to deprecate the ability to deserialize class instances via ''wddx_deserialize()''. * [[rfc:arrayiterator-improvements|ArrayIterator improvements]] \\ Proposes adding ''ArrayIterator::seekKey()'' and ''ArrayIterator::prev()'' (Created: 2016-11-21) * [[rfc:use-php_mt_rand|Use php_mt_rand() where php_rand() is used]]\\ This RFC proposes replacing php_rand() function to php_mt_rand(). (Created 2014-07-17) * [[rfc:revisit-trailing-comma-function-args|Revisit trailing commas in function arguments]]\\ Revisit trailing commas in function arguments (Created 2015-10-07) * [[rfc:short_closures|Short Closures (''~>'' operator)]] \\ This RFC proposes an operator for shorter Closures. * [[rfc:reflectionparameter-getclassname| ReflectionParameter::getClassName()]] \\ Add reflection method to access to a class name in a type hint (Created 2015-01-30) * [[rfc:bigint|Big Integer Support]]\\ Adds Big Integer support to PHP (Created 2014-06-20) * [[rfc:scalar_type_hints|Scalar Type Hints]] \\ Adds four type hints for scalar types. (Created 2014-12-14) * [[rfc:deprecate-ini-functions|Deprecate function that modify INI]]\\ There are number of functions that modify INI value. Let them deprecate and use ini_get()/ini_set(). (Other RFC is proposed) * [[rfc:sync|pecl_sync]]\\ Whether PHP should support locking mechanism on its core * [[rfc:function_referencing|Function Referencing as Closures]]\\ Proposes a new syntax to allow referencing functions and methods as closures * [[rfc:readonly_properties|Readonly Properties]]\\ Adds a ''readonly'' specifier to make properties writeable within a class, but only readable from outside (Created 2014-10-24) * [[rfc:strict_argcount|Strict Argument Count On Function Calls]] \\ This RFC proposes to sensibly add a strict argument count check for function calls on PHP7 (Created 2015-02-20) * [[rfc:scalar_type_hinting_with_cast|Add scalar type hinting with casts]]\\ This RFC proposes adding scalar type hinting with casting to provide more robust parameter hinting. (Re-opened 2014-07-13) * [[rfc:session-read_only-lazy_write|Sessions: Improve original RFC about lazy_write]]\\ An attempt at redesigning the accepted solution from [[rfc:session-lock-ini]]. * [[rfc:gmp_number|Make GMP number work like PHP number]]\\ Make compatible PHP number * [[rfc:const_scalar_expressions2|Constant Scalar Expressions (re-opening)]]\\ This RFC proposes adding support for Constant Scalar Expressions. * [[rfc:function_autoloading|Function Autoloading]]\\ This RFC proposes to refactor the existing autoloading mechanism to support function and constant autoloading. * [[rfc:protocol_type_hinting|Structural Type Hinting]]\\ This RFC proposes a new type-hint format to allow run-time checking of Structural Types. * [[rfc:const_scalar_expressions|Constant Scalar Expressions]]\\ This RFC proposes adding support for Constant Scalar Expressions. * [[rfc:request-tempnam|Modify tempnam() to handle directories and auto-cleanup]]\\ Add TEMPNAM_DIR and TEMPNAM_REQUEST options to tempnam() * [[rfc:parameter_type_casting_hints|Parameter Type Casting Hints]]\\ This RFC proposes adding type casting hints to function declarations. * [[rfc:voting_who|Who can vote?]]\\ Define the participants of the voting process. * [[rfc:magicquotes_finale|Magic Quotes in PHP, the Finalé]]\\ A safe, orderly manner for getting rid of Magic Quotes. * [[rfc:returntypehint2|Return value type hint]]\\ Return type hinting * [[rfc:object_cast_magic|Cast and Assign Magic Methods]]\\ Feature request to expose object_cast, get and set to PHP land code via two new magic methods * [[rfc:mysqlnd_localhost_override|Add mysqlnd.localhost_override option]]\\ This RFC proposes to add mysqlnd.localhost_override to more easily override localhost when connecting to a MySQL database. * [[rfc:useas|Allow use T_AS in closure use statement]]\\ Allow user use a alias name for lexical variable of closure * [[rfc:strncmpnegativelen|strn(case)cmp supporting a negative length as its third paramter]]\\ This extends PHP's string function strn(case)cmp to support a negative length as parameter * [[rfc:nested_classes|Nested Class Support]]\\ This RFC proposes support for nested classes, following on from Anonymous Classes. * [[rfc:jsonserializable | Extending the JsonSerializable interface]] \\ This RFC aims to allow creation of an object through JSON (Created 2015-07-13) * [[rfc:array-to-string|Improve array to string conversion]] \\ Proposes alternative behaviors for array to string zval conversion. (Created 2015/01/10) * [[rfc:intl.charset-detector|IntlCharsetDetector]] \\ Wrap ICU's UCharsetDetector (Created: 2016-04-11) * [[rfc:kill-csv-escaping|Kill proprietary CSV escaping mechanism]] \\ (Created: 2018-09-27; Withdrawn: 2018-12-02) ===== Inactive ===== This section is for RFCs that had been in discussion, but did not have any activity or discussion about them recently. It can be because they have been deferred, obsoleted, or appear to have been abandoned, or because the authors need more work on them. Sorry if your RFC is added here and you feel it is still active; please move it back to the appropriate section. * [[rfc:short-match|Short Match]] (Created 2020-12-13) * [[rfc:conditional_break_continue_return|Conditional Return, Break, and Continue Statements]]\\ Conditional Return, Break, & Continues; aka "return early" (Created 2020-05-16) * [[rfc:deprecate-inconsistent-cast-keywords|Deprecate Inconsistent Cast Names]] \\ Deprecate cast names that are not valid as type declarations * [[rfc:error backtraces|Error backtraces]] \\ Add backtraces to error output (Created 2020-05-25) * [[rfc:namespace_scoped_declares|Namespace-scoped declares]] \\ Add ability to specify declare directives at the namespace level. (Created: 2016-09-20) * [[rfc:pdo-mysql-get-warning-count|Add PDO function: mysqlGetWarningCount]] (Created 2021-02-26) * [[rfc:default-session-strict-mode|Session strict mode default ini settings]] \\ More secure ini defaults for sessions (Created: 2018-02-13) * [[rfc:disallow-multiple-constructor-calls|Disallow multiple constructor calls]] \\ Raise an error on calling $obj->__construct (Created: 2017-01-17) * [[rfc:ommit-double-slash-in-user-stream-wrapper-uri|Remove requirement for authority portion of user stream wrapper URIs]] \\ Proposes additional flag allowing to use valid URI with StreamWrapper's (Created: 2017-01-23) * [[rfc:chaining_comparison|Comparison Chains]] \\ Implement arbitrary chaining of comparator operations * [[rfc:replace_parse_url|Create URLParser and URLBuilder Classes]] \\ Proposed improvement beyond what parse_url() allows Created: 2016-10-04) * [[rfc:comparator_interface|Comparator interface]] \\ Proposes introduction of Comparator interface (Created: 2016-09-27) * [[rfc:automatic_csrf_protection|Automatic CSRF protection]] \\ Extend session module to provide automatic CSRF protection (Created 2016-05-10) * [[rfc:exception_bt_provide_object|Extending Exception backtraces to provide 'object']] \\ Extending Exception backtraces to provide 'object' (Created 11/04-2016) * [[rfc:foreach_void|Add foreach iteration of keys without values]] \\ Add new syntax to enable foreach iteration without retrieving values (Created 2016-01-09) * [[rfc:introduce-type-affinity|Type Affinity]] \\ This RFC proposes type affinity for inputs * [[rfc:parser-extension-api|Parser Extension API]] \\ This RFC proposes a userland API to fetch an AST for code and to provide parser extensions (Created 2015/02/17) * [[rfc:linking_in_stream_wrappers|Support linking in stream wrappers]]\\ Add support for links in stream wrappers by adding appropriate hooks * [[rfc:string-bitwise-shifts|Normalize string bitwise shifts]]\\ Bitwise shifts to operate on string bytes instead of casting to integer. * [[rfc:consistent-names|Consistent names for legacy functions/classes]]\\ This RFC proposes to use alias to provide both legacy and consistent names. * [[rfc:inconsistent-behaviors|Inconsistent behaviors]]\\ This RFC is to discuss/document inconsistent behaviors. * [[rfc:csrandombytes|Platform and extension-independent API to the system CSPRNG]]\\ Request for Comments: Platform and extension-independent API to the system CSPRNG. * [[rfc:loop_else|Loop+Else control structure]] \\ This RFC proposes an optional “else” clause that can be used after while, for, and foreach loops. * [[rfc:case-sensitivity|Make the PHP core case-sensitive]] * [[rfc:zpp-conversion-rules|Restrict parameter parsing rules]] \\ Restrict rules to accept and implicitely convert internal function input arguments. * [[rfc:sourcemaps|Sourcemaps]] \\ Add support for Source Maps Revision 3 * [[rfc:static_class_constructor|Static class constructor]] \\ Introduce a class constructor to initialize class state * [[rfc:typesafe-callable|Typesafe Callable]] \\ Allow typesafe callables (Created 2016-04-04) * [[rfc:cyclic-replace|Add cyclic string replace to str_[i]replace() functions]] (Created 2015/01/05) * [[rfc:php8_assertions|PHP 8 Assertions]] (Created 2019-10-28) * [[rfc:allow-void-variance|Allow void variance]] \\ Allow void variance. (Created: 2019-02-04) * [[rfc:namespace-visibility|Namespace Visiblity for Class, Interface and Trait]] \\ Add support for public, protected and private classes, interfaces and traits. (Created: 2018-07-18) * [[rfc:fiber|Fiber]] \\ Primitives for implementing light weight cooperative concurrency (Created: 2017-09-13 2018-06-11 to 2018-06-22) * [[rfc::deprecate-pear-include-composer|Deprecate PEAR/PECL & Replace with composer/pickle]] \\ Proposes replacing pear/pecl with composer/pickle (Created: 2016-09-01) * [[rfc:callableconstructors|Callable constructors]] \\ Allow constructors to be called as a callable (Created 2015-02-25) * [[rfc:lexical-anon|Anonymous Class Lexical Scope]] \\ Anonymous Class Lexical Scope (Created 2016-04-19) * [[rfc:intersection_types|Intersection Types]] (Discussion began 2016-04-28) * [[rfc:constant_redefinition|Exception on constant redefintion]] \\ Throw Exception on Attempt of Constant Redefinition (Created 2016-06-10) * [[rfc:retry-keyword|Retry keyword]] \\ Proposes the implementation of the Retry keyword in Exceptions context. (Created: 2017-06-19) * [[rfc::curl_setopt_strict_types|Enable strict_types checking for curl_setopt()]] \\ Introduce strict type enforcement inside curl_setopt() when declare(strict_types=1) is being used. (Created: 2017-04-21) * [[rfc::deprecate_pdo_null|Deprecate PDO::PARAM_NULL]] (Created 2017-05-15) * [[rfc:deprecate-uniqid|Deprecate uniqid()]] \\ Proposes the deprecation of ''uniqid()'' (Created: 2017-05-24) * [[rfc:immutability|Immutable classes and properties]] \\ Proposes introduction of immutable classes and properties (Created: 2016-08-12, Reopened 2018-02-20) * [[rfc:deprecate-backtick-operator|Deprecate backtick operator]] (Created: 2018-02-11) * [[rfc:fallback-to-root-scope-deprecation|Deprecation of fallback to root scope]] \\ Deprecation of fallback to root scope (Created: 2018-02-03) * [[rfc:scalar-pseudo-type|Scalar Pseudo-type]] \\ Proposal to add ''scalar'' pseudo-type for parameter and return types (Created: 2017-12-24) * [[rfc:explicit_send_by_ref|Explicit call-site pass-by-reference]]\\ Allow explicitly annotating by-reference argument passing at the call-site. (Created: 2017-12-02) * [[rfc:operator_functions|Operator functions]] \\ Add counterpart functions for PHP's basic operators (Published: 2017-09-08) * [[rfc: traits-with-interfaces|Traits with interfaces]] \\ Allow traits to explicitly implement interfaces (Created 2016-02-17) * [[rfc: adopt-code-of-conduct|Adopt Code of Conduct]] \\ This RFC proposes that the PHP project should adopt a formal code of conduct for its members. (Re-created 2016-01-21) * [[rfc: token-get-always-tokens|Normalize token_get_all() output]] \\ Allows specifying flag to normalize output of token_get_all() * [[rfc:on_demand_name_mangling|On-demand Name Mangling]] \\ Replaces automatic super-global name mangling with an on-demand approach for those apps requiring it. (Updated 2016-01-08) * [[rfc:array_key_first_last_index|Add array_key_(first|last|index) functions]] \\ Add functions to get the first/last/indexed array key and value. (Created 2016-01-01) * [[rfc::improve_predictable_prng_random|Improve predictable PRNG random]] \\ Fix predictable PRNG problems. (Created: 2017-02-01) * [[rfc:soap_get_location|SoapClient getLocation]] \\ Add getLocation method to SoapClient (Created: 2016-12-06) * [[rfc:distrust-sha1-certificates|Distrust SHA-1 Certificates]] \\ Distrust SHA-1 starting in PHP 7.2 (Created: 2016-11-25) * [[rfc:secure_serialization|Secure serialization by authentication code]] \\ Add authentication code protection to serialization. * [[rfc:list_default_value|Default Value in List Assignment Syntax]] \\ Allow set default values when using list assignment * [[rfc:sql_injection_protection|Automatic SQL injection protection]] \\ This RFC enables automatic detection of SQL queries that are issued with a non-constant query parameter-string, with configurable evasive action on detection (i.e. ignore/log/throw). * [[rfc:consistent_function_names|Introduce consistent function names]] \\ This RFC proposes to have consistent function names that accord CORDING_STANDARDS. * [[rfc:introduce_design_by_contract|Introduce Design by Contract]]\\ This RFC is vote only RFC for 2 Design by Contract introduction proposals. * [[rfc:DbC|Native Design by Contract support as annotation]] \\ This RFC proposes native Design by Contract support to PHP (Created 2015/02/04) * [[rfc:DbC2|Native Design by Contract support as definition]] \\ This RFC proposes native Design by Contract support to PHP (Created 2015/02/10) * [[rfc:allow_url_include|Precise URL include control]]\\ This RFC proposes precise URL include control. * [[rfc:comparable|Comparable]]\\ A proposal to add a Comparable interface for userspace object comparisons. * [[rfc:deprecate_ini_set_get_aliases| Deprecate INI set/get aliases]] \\ This RFC proposes INI set/get alias function deprecation. (Created 2015-01-28) * [[rfc:additional-splat-usage|Additional splat operator usage]]\\ Allow splat operator to be used in array literals. (Created 2014-11-03) * [[rfc:github-pr|GitHub Pull Requests Triage Team]]\\ Define a process for triaging GitHub pull requests. (Created 2014-10-30) * [[rfc:checkdnsrr-default-type|Change checkdnsrr() $type argument behavior]]\\ This RFC proposes that the default behavior of the checkdnsrr() function be changed such that it no longer checks only for MX records by default. (Created 2014-09-19) * [[rfc:binary_string_comparison|Binary String Comparison]]\\ Non-strict binary string comparison * [[rfc:password_hash_spec|password_hash function behavior]]\\ Current password_hash()'s hash function has password length limitation. (Created 2014-07-23) * [[rfc:reflectionparameter.typehint|ReflectionParameter Typehint accessors]]\\ New API for accessing typehints on a reflection parameter. * [[rfc:secure-session-options-by-default|Secure Session Options]]\\ This RFC proposes secure options for session module as default (Vote period: 2014/02/14 - 2014/02/21) (Created: 2014/02/01) * [[rfc:unified-crypto-source|Unify crypto source INI setting]]\\ This RFC proposes unified crypto source settings. (Created 2014/02/13) * [[rfc:build-openssl-by-default|Build OpenSSL module by default]]\\ This RFC proposes building openssl module by default. * [[rfc:gmp-floating-point|Add support for GMP floating point numbers]]\\ Separate out floating point change from [[rfc:gmp_number|gmp_number]] (Created 2014/01/04) * [[rfc:generics|Add generic class and method support]] (Created 2015/04/28) * [[rfc:resource_typehint|Add resource typehint]] (Created 2015/11/11) * [[rfc:short_ternary_equal_operator|Short Ternary Assignment Operator]] \\ Allow shorthand for self assigning short ternary expressions (Created: 2016-03-10) * [[rfc:pipe-operator|Pipe Operator]] \\ Syntactic sugar for chaining expressions (Created: 2016-04-29) * [[rfc:simple-annotations|Simple Annotations]] (Created: 2016-05-13) * [[rfc:improve_hash_hkdf_parameter|Improve hash_hkdf() parameter order and handling]] \\ hash_hkdf() added to master(7.2) has non optimal parameter order and handling. (Created: 2017-02-05) * [[rfc:basic_scalar_types|Basic Scalar Types]]\\ A RFC proposing pure scalar types (Created 2015-03-11) * [[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:drop_sql.safe_mode|Drop sql.safe_mode]]\\ Dropping a php.ini setting affecting two extensions * [[rfc:get-random|Get Random]]\\ This RFC talks about how to get a (better) random string in PHP * [[rfc:error-optimizations|Error optimizations]]\\ A way to optimize the formatting of our errors * [[rfc:autofunc|Function autoloading through spl_autoload*]]\\ This RFC introduces a potential implementation for function autoloading which would be consistent with what we have for autoloading classes. (Created 2011/08/05) * [[rfc:cli-strict|CLI options for strict and quiet modes]]\\ This RFC proposes a ''-W'' option to turn on maximum error reporting, and a ''-Q'' option for no error reporting. (Created 2011/07/05) * [[rfc:logicalshiftoperator|Add Logical Shift Operators]]\\ Add logical shift operators for bitwise shifting of strings (Created 2011/07/18) * [[rfc:grisu3-strtod|Faster strtod algorithm]]\\ This RFC proposes to add the Grisu3 strtod algorithm as an optional feature to PHP. (Created 2011/07/15) * [[rfc:isset-set-operator|Isset Set Operator]]\\ This RFC proposes new operators for handling unset/falsey variables. * [[rfc:object_cast_to_types|Scalar Type Casting Magic Methods]]\\ This RFC proposes a set of new scalar type casting magic methods for classes. * [[rfc:docblockparser|docBlock Parser]]\\ Proposal to add docBlock parsing to the Reflection extension * [[rfc:annotations-in-docblock|Annotations in doc block]]\\ Class Metadata feature (aka Annotations) support in PHP through DocBlock * [[rfc:objectarrayliterals|Object and Array Literals]]\\ This RFC proposes first-class, inline object and array literals similar to JSON. * [[rfc:weakreferences|Weak References]]\\ This RFC proposes the introduction of Weak References in PHP via a new SPL class. * [[rfc:pdov1|PDO Version 1 Improvements]]\\ This RFC proposes a set of improvements to be made to PDO. * [[rfc:taint|Tainted variables]]\\ This RFC proposes an implementation of variable tainting in PHP. * [[rfc:static-classes|Static classes]]\\ This RFC proposes the introduction of static classes for PHP * [[rfc:class_casting_to_scalar|class casting to scalar]]\\ This RFC proposes a way to do like __toString(), for other scalar types * [[rfc:autodefine|Autodefinition]]\\ This RFC proposes the ability to define missing definitions (generalization of autoload). * [[rfc:linecontrol|Line Markers in PHP]]\\ This RFC proposes the introduction of line markers in PHP. * [[rfc:autoboxing|Autoboxing]]\\ Autoboxing feature in PHP * [[rfc:socketactivation|Systemd socket activation]]\\ Systemd socket activation support for PHP-FPM (Created 2012/10/18) * [[rfc:deprecated-modifier|Add a deprecated modifier for functions]]\\ Add a deprecated modifier for functions (Created 2012/12/25) * [[rfc:prototype_checks|Clarifying/Improving the prototype checks]]\\ This RFC discusses the current state of prototype checks, and gives some directions for discussion and improvement. (Created 2011/09/19) * [[rfc:jenkins|Introducing Jenkins]]\\ This RFC proposes using Jenkins as a Continuous Ingtegration environment for the php project. (Created 2011/11/01) * [[rfc:anonymous_catch|Support for anonymous catch-statements]]\\ This RFC proposes adding catch-statements without variables, and fully anonymous catches. (Created 2013/06/25) * [[rfc:errors_as_exceptions|Errors as Exceptions]]\\ This RFC discusses the conversion of errors to exceptions (Created 2011/04/06) * [[rfc:traitsmodifications|Proposed modifications to traits]]\\ This RFC proposes three modifications to traits: increasing separation and consistency of inheritance vs. trait composition, adding trait-local scope, and extending ''use'' syntax. (Created 2011/04/06) * [[rfc:datetime_tostring|Add toString to DateTime]]\\ A proposal to add toString to DateTime (Created 2012/09/01) * [[rfc:propertygetsetsyntax-as-implemented|Property get/set syntax]]\\ This RFC proposes to add a C# style property get/set syntax to PHP classes. (Created 2011-12-21 - document index) * [[rfc:optional-t-function|Make T_FUNCTION in method declarations optional.]]\\ A proposal for removing the requirement to use T_FUNCTION in method declarations. (Created 2011/04/06) * [[rfc:jsonable|Jsonable interface]]\\ Feature request to allow support json_(encode|decode) to handle Object instance conversions. * [[rfc:extensionsiberia|Siberia]]\\ This RFC proposes to create a cemetery for dead extensions (PECL or core). * [[rfc:array_delete|array_delete]]\\ This RFC proposes adding array_delete() as an intuitive API for array element deletion. (Created 2012/08/22) * [[rfc:enhanced_error_handling|Enhanced Error Handling]]\\ This offers a concept and implementation to let the user (php coder) choose between php_error, exception et al while retaining backwards compatibility (Created 2009/12/27) * [[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). (Created 2009/07/03) * [[rfc:better_benchmarks|Better benchmarks for PHP]]\\ A proposal for replacing current bench.php benchmarking script. (Created 2009/04/03) * [[rfc:remove_zend_api|Remove reliance of Zend API]]\\ A proposal to remove the use of the Zend API in PHP libraries. (Created 2009/03/29) * [[rfc:php_native_interface|PHP Native Interface]]\\ Provide complete alternative to writing libraries interfaces using the Zend API libraries. (Created 2009/04/05) * [[rfc:fcallfcall|Function call chaining]]\\ Function call chaining implementation. (Created 2010/01/30) * [[rfc:source_files_without_opening_tag|Source files without opening tag]]\\ This RFC proposes a way to support source code files without tag. * [[rfc:namedparameters|Named Parameters (obsolete)]]\\ Dummy RFC for named parameters, superseded by [[rfc:named_params|Named Parameters]]. * [[rfc:lemon|Lemon as a language parser]]\\ This RFC discusses the switch from YACC/Bison to lemon for the main language parser * [[rfc:ast_based_parsing_compilation_process|Moving to an AST-based parsing/compilation process (obsolete)]]\\ Proposal for AST-based compilation process. Superseded by the [[rfc:abstract_syntax_tree|Astract Syntax Tree RFC]]. (Created 2012/09/04) * [[rfc:escaper|Escaping RFC for PHP Core]]\\ Implementing a core anti-XSS escaping class and possibly functions for the more procedurally inclined programmers. (Created 2012/09/18) * [[rfc:site_voting_poll|Integrate voting polls in PHP.net]]\\ This RFC talks about integration of voting polls into PHP.net (Created 2013/02/23) * [[rfc:unset_bool|unset(): return bool if the variable has existed]]\\ Add to unset a return value if the deletion was successful (Created 2013/03/06) * [[rfc:internal_serialize_api|Internal Serialize API]]\\ This RFC proposes API for internal generating of serialization. (Created 2013/07/27) * [[rfc:normalize_inc_dec|Normalizing increment and decrement operators]]\\ This RFC proposes to make ++ and -- operators to work more intuitively. (Created 2013-12-19) * [[rfc:nophptags|Make PHP open tag optional for better security]]\\ This RFC proposes option (php.ini and CLI opts) for removing PHP tags (