Hi Alex,

On 10 Sep 2014, at 13:59, Alexander Lisachenko <lisachenko...@gmail.com> wrote:

> Hi!
> 
> Maybe it will be better to do this in another way: introduce an RFC to
> add 'deprecated' keyword into the syntax like 'final' or 'protected'.
> There are many frameworks that want to deprecate some methods or
> classes. Currently it's only possible via "@deprecated" tag in the
> phpDoc-block, but this tag doesn't influence on method invocation, so
> no warnings are generated.

Any decent IDE should tell you that a function is deprecated by observing 
DocBlock; I believe PhpStorm uses strike-through to indicate deprecated 
functionality.

> 
> Symfony uses trigger_error($message, E_USER_DEPRECATED) explicitly in
> deprecated methods to trigger this warning (see
> https://github.com/symfony/symfony/pull/6180), but this is not a
> transparent solution.

I agree that having a ‘deprecated’ keyword would simplify matters, but I don’t 
think that alone is worth making it a language feature.

This could be a good case for annotations, though, if we ever get such a thing 
:)

> 
> This can be look like this:
> 
> class Test {
>    deprecated protected $someProperty;
> 
>    deprecated public function foo() {}
>    public function bar() {}
> }
> 
> 
> deprecated class OldStuff {}
> 
> deprecated function someOldFunction() {}
> 
> This RFC will give more control over 'deprecated' functionality and
> can be easily tested.
> 
> Thoughts?
> 
> 2014-09-10 9:42 GMT+04:00 Tjerk Meesters <tjerk.meest...@gmail.com>:
>> 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?


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

Reply via email to