rfc:my_rfc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
rfc:my_rfc [2017/09/22 13:28] – external edit 127.0.0.1rfc:my_rfc [2022/04/05 18:30] (current) – this is the dummy URL on the howto page; make clear that it's not in any way a real URL imsop
Line 1: Line 1:
-====== PHP RFC: Deprecate INI set/get aliases ====== +**This is not your RFC.**
-  Version: 0.1 +
-  Date: 2015-01-31 +
-  * Author: Yasuo Ohgaki <yohgaki@ohgaki.net> +
-  * Status: Under Discussion +
-  * First Published at: http://wiki.php.net/rfc/deprecate_ini_set_get_aliases +
- +
-===== Introduction ===== +
- +
-There are number of INI set/get functions. This RFC proposes deprecation of these functions. +
- +
-Use of ini_set()/ini_get() simplifies/improves/cleanups PHP. Some of these alias function names is inconsistent, some aliases are missing while similar INI setting may be set/get by aliases. Simple INI set/get alias functions are just making PHP complex, creating more inconsistencies. PHP needs no more INI set/get aliases at least, document use of ini_get()/ini_set() in the CODING_STANDARDS. +
- +
- +
-**Pros** +
-  - Less API, hence simpler API. +
-  - Modules will be less buggy. i.e. PHP_INI_MH() must handle "state" properly, but it tends to be forgotten, 3rd party modules especially.  +
-  - Consistent coding style/API across modules, both internal and script. +
-  - Reduced documentations. INI descriptions are only in INI section. +
-  - Less documentations, hence less documentation bugs. +
-  - Better documentation. All user needs to know will be in INI section. +
-  - Awareness of INI setting use. Users are better to know they are using INI. i.e. All INI values has the same limitations, INI_SYSTEM/INI_PERDIR/INI_USER, stage limitations if any. +
-  - (Please point it out more advantages) +
- +
-**Cons** +
-  - Existing code modifications. (It's E_DEPRECATED. User may ignore.) +
-  - (Please point it out more disadvantages) +
- +
- +
-**Before** +
-<code php> +
-<?php +
-// Setup environment +
-session_cache_limiter('public'); +
-session_name('MYSESS'); +
-session_save_path('/var/php/session'); +
-ini_set('max_execution_time', 15); +
-ini_set('display_errors', 'Off'); +
-ini_set('default_charset', 'UTF-8'); +
-mb_internal_encoding('UTF-8'); +
-</code> +
- +
-**After** +
-<code php> +
-<?php +
-// Setup environment +
-ini_set('session.cache_limiter', 'public'); +
-ini_set('session.name', 'MYSESS'); +
-ini_set('session.save_path', '/var/php/session'); +
-ini_set('max_execution_time', 15); +
-ini_set('display_errors', 'Off'); +
-ini_set('default_charset', 'UTF-8'); +
-ini_set('mbstring.internal_encoding', 'UTF-8'); +
-</code> +
- +
- +
- +
- +
-**From pre RFC discussion:** +
- +
-  removing or disrupting functions without a very good reason +
-  (such as, functionality going away or this function is abused or is   +
-  broken in many use cases) is wrong. These functions don't seem broken, +
-  they just do something that you can do in another way. I don't think it +
-  is necessary to deprecated them. (Stas) +
- +
- +
- +
- +
- +
-===== Proposal ===== +
- +
-There are 2 documentation and 1 code change proposal.   +
- +
-1. Add plain ini_get/set() usage in **CODING_STANDARDS**. In the "Code Implementation" session add following standard. +
- +
-  10.  Use ini_set()/ini_get() function when modules need to change INI values. Do not add simple ini_set()/ini_get() +
-       alias functions. +
- +
-2. Document INI set/get alias functions in the **PHP Manual**. +
- +
-e.g. +
- +
-  - http://php.net/manual/en/function.session-save-path.php +
-  - http://php.net/manual/en/function.session-module-name.php +
-  - http://php.net/manual/en/function.session-cache-expire.php +
-  - http://php.net/manual/en/function.session-cache-limiter.php +
-  - http://php.net/manual/en/function.session-name.php +
-  - http://php.net/manual/en/function.gc-enable.php +
-  - http://php.net/manual/en/function.set-include-path.php +
-  - http://php.net/manual/en/function.set-time-limit.php +
-  - http://php.net/manual/en/function.error-reporting.php +
-  - http://php.net/manual/en/function.mb-internal-encoding.php +
-  - http://php.net/manual/en/function.mb-detect-order.php +
-  - http://php.net/manual/en/function.mb-language.php +
-  - http://php.net/manual/en/function.iconv-set-encoding.php +
-  - And more. +
- +
-3. Add **E_DEPRICATED** errors for INI set/get alias functions. +
- +
- +
-===== Backward Incompatible Changes ===== +
- +
-1. None for CODING_STANDARD documentation. +
- +
-2. None for deprecation documentation in the PHP manual. +
- +
-3. E_DEPRECATED error may be ignored +
- +
- +
-===== Proposed PHP Version(s) ===== +
- +
- - PHP 7.0 +
- +
-===== RFC Impact ===== +
-==== To SAPIs ==== +
- +
-No SAPI impact. +
- +
-==== To Existing Extensions ==== +
- +
-Modules that has INI set/get aliases are affected. +
- +
- - standard +
- - session +
- - mbstring +
- - iconv +
- - (and more) +
- +
-==== To Opcache ==== +
- +
-No Opcache impact. +
- +
-==== New Constants ==== +
- +
-No constant. +
- +
-==== php.ini Defaults ==== +
- +
-No changes for INI values. +
- +
-  hardcoded default values +
-  php.ini-development values +
-  * php.ini-production values +
- +
-===== Open Issues ===== +
- +
-Decided exceptions. Candidates are +
- +
- - Zend/Core functions that changes INI. e.g. gc_enable. +
- +
- +
-===== Unaffected PHP Functionality ===== +
- +
-Functions that are not simple INI set/get aliases are not affected.  +
- +
-===== Future Scope ===== +
- +
-None. If proposal 3 (Add E_DEPRECATE error) is rejected, adding E_DEPRECATE error will be future decision. +
- +
-===== Proposed Voting Choices ===== +
- +
-Proposals require 50%+1 majority +
- +
- +
- +
-===== Patches and Tests ===== +
- +
-No patch is prepared as this is a trivial change. +
- +
- +
-===== Implementation ===== +
-After the project is implemented, this section should contain  +
-  - the version(s) it was merged to +
-  - a link to the git commit(s) +
-  - a link to the PHP manual entry for the feature +
- +
-===== References ===== +
- +
- +
- +
-===== Rejected Features ===== +
- +
  
 +If you came here from the [[rfc:howto]] page expecting to start a new RFC here, you've misunderstood. You need to **pick a unique URL for your RFC**, beginning ''https://wiki.php.net/rfc/'', that hasn't already been used.
  
 +If you came here looking for //someone else's RFC//, look at [[:rfc|the RFC index page]].
rfc/my_rfc.txt · Last modified: 2022/04/05 18:30 by imsop