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