Req #75442 [Asn->Csd]: Remove FILTER_FLAG_SCHEME|HOST_REQUIRED constants

From: Date: Tue, 17 Jul 2018 11:09:28 +0000
Subject: Req #75442 [Asn->Csd]: Remove FILTER_FLAG_SCHEME|HOST_REQUIRED constants
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-216365@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=75442&edit=1

 ID:                 75442
 Updated by:         cmb@php.net
 Reported by:        wrossmann at gmail dot com
 Summary:            Remove FILTER_FLAG_SCHEME|HOST_REQUIRED constants
-Status:             Assigned
+Status:             Closed
 Type:               Feature/Change Request
 Package:            Filter related
 PHP Version:        Irrelevant
 Assigned To:        cmb
 Block user comment: N
 Private report:     N

 New Comment:

These flags are deprecated as of PHP 7.3.0 and will be removed in
PHP 8, according to
<https://wiki.php.net/rfc/deprecations_php_7_3#filter_flag_scheme_required_and_filter_flag_host_required>.


Previous Comments:
------------------------------------------------------------------------
[2017-10-28 16:24:49] cmb@php.net

See <https://externals.io/message/100981>.

------------------------------------------------------------------------
[2017-10-28 15:43:20] cmb@php.net

This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.

Thank you for the report, and for helping us make our documentation better.

I'm switching to feature request wrt. removing the unused constants.

------------------------------------------------------------------------
[2017-10-28 15:41:01] cmb@php.net

Automatic comment from SVN on behalf of cmb
Revision: http://svn.php.net/viewvc/?view=revision&amp;revision=343324
Log: Fix bug #75442: SCHEME and HOST VALIDATE_URL constants are not actually used

------------------------------------------------------------------------
[2017-10-25 21:24:48] wrossmann at gmail dot com

Description:
------------
Commit: https://github.com/php/php-src/commit/ea491dba64d6c15a515e0f1cc58d881c2e2dc2f3#diff-a61ab806f8c2193851acdd3eb5f37232L489

Regarding bug: https://bugs.php.net/bug.php?id=39898

The above patch essentially removed the only usage of the constants FILTER_FLAG_SCHEME_REQUIRED and
FILTER_FLAG_SCHEME_REQUIRED, however the constants themselves not only still exist, but the
documentation's only hint about this is the changelog note: 5.2.1 FILTER_VALIDATE_URL now
defaults to FILTER_FLAG_SCHEME_REQUIRED and FILTER_FLAG_HOST_REQUIRED.

The phrasing of this, and the continued presence of these constants, is misleading in that the word
'default' implies that it can be changed to something else, which it frankly cannot.
Furthermore, there's no '_DEFAULT' flag against which one would expect to negate
whatever defaults are supposedly enabled, hence the explicit 0 in the test script.

I suggest at least amending the doc page to better convey to users that the VALIDATE_URL filter
*requires* both scheme and host since 5.2.1, and that those constants have no effect.

At some point I'd wager that these now-useless constants should be removed entirely, but doing
so would be a potential BC break so I guess that would have to wait for PHP8.

Test script:
---------------
$no_scheme = '//google.com/foo/bar';
$no_host   = '/foo/bar';

var_dump(
    $no_scheme,
    parse_url($no_scheme),
    filter_var("$no_scheme",FILTER_VALIDATE_URL, 0)
);

var_dump(
    $no_host,
    parse_url($no_host),
    filter_var("$no_host",FILTER_VALIDATE_URL, 0)
);


Expected result:
----------------
No scheme:
string(20) "//google.com/foo/bar"
array(2) {
  ["host"]=>
  string(10) "google.com"
  ["path"]=>
  string(8) "/foo/bar"
}
bool(true)

No host:
string(8) "/foo/bar"
array(1) {
  ["path"]=>
  string(8) "/foo/bar"
}
bool(true)

// note: this would only be the expected result if the functionality matched the documentation.

Actual result:
--------------
No scheme:
string(20) "//google.com/foo/bar"
array(2) {
  ["host"]=>
  string(10) "google.com"
  ["path"]=>
  string(8) "/foo/bar"
}
bool(false)

No host:
string(8) "/foo/bar"
array(1) {
  ["path"]=>
  string(8) "/foo/bar"
}
bool(false)



------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=75442&edit=1


Thread (1 message)

  • cmb@php.net
  • Unknown Message
    • cmb@php.net
« previous php.bugs (#216365) next »