Deprecate case-insensitive constants via typelib import

As of PHP 7.3.0, case-insensitive constants are deprecated.  We catch
up on this with regard to ext/com_dotnet, which allows to import
constants from typelibs, by triggering a deprecation notice whenever
`com_load_typelib()` is called with `$case_sensitive` being `false`,
and whenever `com.autoregister_casesensitive` is set to `false`,
regardless of whether there are actually constants in the typelib which
would be imported.
This commit is contained in:
Christoph M. Becker 2019-02-14 18:34:47 +01:00
parent ade9d5e95b
commit fae22461f9
4 changed files with 20 additions and 1 deletions

3
NEWS
View file

@ -10,6 +10,9 @@ PHP NEWS
. Fixed bug #75921 (Inconsistent: No warning in some cases when stdObj is
created on the fly). (David Walker)
- COM:
. Deprecated registering of case-insensitive constants from typelibs. (cmb)
- CURL:
. Fixed bug #76480 (Use curl_multi_wait() so that timeouts are respected).
(Pierrick)

View file

@ -149,6 +149,10 @@ PHP 7.4 UPGRADE NOTES
so is equivalent to calling a non-static method statically, which has been
deprecated since PHP 7.0.
- COM:
. Importing type libraries with case-insensitive constant registering has been
deprecated.
- Mbstring:
. Passing a non-string pattern to mb_ereg_replace() is deprecated. Currently
non-string patterns are interpreted as ASCII codepoints. In PHP 8 the

View file

@ -831,6 +831,10 @@ PHP_FUNCTION(com_load_typelib)
return;
}
if (!cs) {
php_error_docref(NULL, E_DEPRECATED, "Declaration of case-insensitive constants is deprecated");
}
RETVAL_FALSE;
php_com_initialize();

View file

@ -265,11 +265,19 @@ static PHP_INI_MH(OnTypeLibFileUpdate)
return SUCCESS;
}
static ZEND_INI_MH(OnAutoregisterCasesensitive)
{
if (!zend_ini_parse_bool(new_value)) {
php_error_docref("com.configuration", E_DEPRECATED, "Declaration of case-insensitive constants is deprecated");
}
return OnUpdateBool(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
}
PHP_INI_BEGIN()
STD_PHP_INI_ENTRY("com.allow_dcom", "0", PHP_INI_SYSTEM, OnUpdateBool, allow_dcom, zend_com_dotnet_globals, com_dotnet_globals)
STD_PHP_INI_ENTRY("com.autoregister_verbose", "0", PHP_INI_ALL, OnUpdateBool, autoreg_verbose, zend_com_dotnet_globals, com_dotnet_globals)
STD_PHP_INI_ENTRY("com.autoregister_typelib", "0", PHP_INI_ALL, OnUpdateBool, autoreg_on, zend_com_dotnet_globals, com_dotnet_globals)
STD_PHP_INI_ENTRY("com.autoregister_casesensitive", "1", PHP_INI_ALL, OnUpdateBool, autoreg_case_sensitive, zend_com_dotnet_globals, com_dotnet_globals)
STD_PHP_INI_ENTRY("com.autoregister_casesensitive", "1", PHP_INI_ALL, OnAutoregisterCasesensitive, autoreg_case_sensitive, zend_com_dotnet_globals, com_dotnet_globals)
STD_PHP_INI_ENTRY("com.code_page", "", PHP_INI_ALL, OnUpdateLong, code_page, zend_com_dotnet_globals, com_dotnet_globals)
PHP_INI_ENTRY("com.typelib_file", "", PHP_INI_SYSTEM, OnTypeLibFileUpdate)
PHP_INI_END()