On 10 September 2014 06:42, Tjerk Meesters <tjerk.meest...@gmail.com> wrote:
> Hi,
>
> When I was fixing test cases on my `kill-ereg` branch I noticed a Reflection 
> test case for `ReflectionFunction::isDeprecated()`.
>
> The problem with such a test case is that you’d be chasing deprecated 
> functions to tests against as we move along; this is the current list of 
> deprecated functions as taken from a typical 5.4 installation:
>
> Since 4.1.0: call_user_method, call_user_method_array
> Since 4.3.7: mysql_list_tables, mysql_listtables
> Since 5.3  : ereg, ereg_replace, eregi, eregi_replace, split, spliti, 
> sql_regcase, mysql_db_query, magic_quotes_runtime, set_magic_quotes_runtime, 
> set_socket_blocking
> Since 5.4  : mysql_list_dbs
>
> The above are, as far as I’m concerned, all potential candidates for removal 
> in PHP 7, so in order to reliably test a deprecated function I would suggest 
> introducing a hidden function with this signature:
>
> void __deprecated__() { }
>
> And mark that function as eternally deprecated using the ZEND_ACC_DEPRECATED 
> flag.
>
> Thoughts?

An alternative could be this:

--FILE--
<?php

error_reporting(E_DEPRECATED);

foreach (get_defined_functions()['internal'] as $func) {
    $ref = new \ReflectionFunction($func);

    if ($ref->isDeprecated()) {
        $func();
        break;
    }
}

?>
--EXPECTF--

Deprecated: Function %s() is deprecated in %s on line %d


...although arguably this is testing the error rather than the
reflection function. This also assumes that there will always be at
least one deprecated function in the standard library, although I
doubt this is likely to be an issue any time soon.

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to