https://github.com/samsonasik/isdeprecated
:bulb: PHP7+ helper to check deprecated function with E_USER_DEPRECATED & E_DEPRECATED level
https://github.com/samsonasik/isdeprecated
deprecated deprecation-checker handler laminas php
Last synced: 7 months ago
JSON representation
:bulb: PHP7+ helper to check deprecated function with E_USER_DEPRECATED & E_DEPRECATED level
- Host: GitHub
- URL: https://github.com/samsonasik/isdeprecated
- Owner: samsonasik
- License: mit
- Created: 2017-02-04T09:19:12.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2022-09-25T15:51:48.000Z (about 3 years ago)
- Last Synced: 2025-02-01T20:45:37.903Z (9 months ago)
- Topics: deprecated, deprecation-checker, handler, laminas, php
- Language: PHP
- Homepage:
- Size: 75.2 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
IsDeprecated
============[](https://github.com/samsonasik/IsDeprecated/releases)
[](https://travis-ci.org/samsonasik/IsDeprecated)
[](https://coveralls.io/github/samsonasik/IsDeprecated?branch=master)
[](https://github.com/phpstan/phpstan)
[](https://packagist.org/packages/samsonasik/is-deprecated)Introduction
------------IsDeprecated is PHP7 Helper that can help you detect if your function is deprecated with E_USER_DEPRECATED and E_DEPRECATED level.
Features
--------- [x] Detect on independent function (E_USER_DEPRECATED)
- [x] Detect on function inside class (E_USER_DEPRECATED)
- [x] Detect on core php function (E_DEPRECATED)Installation
------------Require uses [composer](https://getcomposer.org/):
```sh
composer require samsonasik/is-deprecated
```Usage
-----There are 2 functions:
*1. For user defined function*
```php
/**
* @param string|array $function the "functionName" or ["ClassName" or object, "functionName"] or "ClassName::functionName"
* @throws InvalidArgumentException when trigger_error found but the error is not E_USER_DEPRECATED
* @throws InvalidArgumentException when trigger_error and E_USER_DEPRECATED found but misplaced
* @return bool
*/
function isDeprecatedUser($function): bool
```> Note: when trigger_error E_USER_DEPRECATED inside condition, you need to use `actual` call with signature:
```php
/**
* @param callable $function callable function
* @return bool
*/
function isDeprecatedWithActualCall(callable $function)
```*2. For core PHP function*
```php
/**
* @param callable $function callable function
* @return bool
*/
function isDeprecatedCore(callable $function): bool
```**Example On independent function**
```php
include 'vendor/autoload.php'; // autoload may already handled by your frameworkuse function IsDeprecated\isDeprecatedUser;
use function IsDeprecated\isDeprecatedWithActualCall;function foo()
{
trigger_error('this method has been deprecated.', E_USER_DEPRECATED);
echo 'foo' . PHP_EOL;
}function foonotdeprecated()
{
echo 'foo' . PHP_EOL;
}function fooDeprecatedWithCondition()
{
if (1 === 1) {
trigger_error('this method has been deprecated.', E_USER_DEPRECATED);
echo 'foo' . PHP_EOL;
}
}// deprecated
var_dump(isDeprecatedUser('foo')); // true OR for deprecate with condition
var_dump(isDeprecatedWithActualCall(function () {
fooDeprecatedWithCondition();
})); // true// not deprecated
var_dump(isDeprecatedUser('foonotdeprecated')); // false// Usage Example:
if (isDeprecatedUser('foo')) {
foonotdeprecated();;
} else {
foo();
}
```**Example On function inside class**
```php
include 'vendor/autoload.php'; // autoload may already handled by your frameworkuse function IsDeprecated\isDeprecatedUser;
use function IsDeprecated\isDeprecatedWithActualCall;class Aclass
{
function foo()
{
trigger_error('this method has been deprecated.', E_USER_DEPRECATED);
echo 'foo' . PHP_EOL;
}function foodeprecatedWithCondition()
{
if (1 === 1) {
trigger_error('this method has been deprecated.', E_USER_DEPRECATED);
}
echo 'foo' . PHP_EOL;
}function foonotdeprecated()
{
echo 'foo' . PHP_EOL;
}// you may call inside the class
// with $this as first index of array parameter
function execute()
{
if (isDeprecatedUser([$this, 'foo'])) {
$this->foonotdeprecated();
return;
}$this->foo();
}
}// deprecated
var_dump(isDeprecatedUser(['Aclass', 'foo'])); // true OR
var_dump(isDeprecatedUser([new \Aclass(), 'foo'])); // true OR
var_dump(isDeprecatedUser('Aclass::foo')); // true OR for deprecate with conditionvar_dump(isDeprecatedWithActualCall(function () { // true
new \Aclass()->foo();
}));// not deprecated
var_dump(isDeprecatedUser(['Aclass', 'foonotdeprecated'])); // false OR
var_dump(isDeprecatedUser([new \Aclass, 'foonotdeprecated'])); // false OR
var_dump(isDeprecatedUser('Aclass::foonotdeprecated')); // false// Usage Example:
if (isDeprecatedUser(['Aclass', 'foo'])) {
(new \Aclass())->foonotdeprecated();;
} else {
(new \Aclass())->foo();;
}
```**Example On core PHP function**
```php
include 'vendor/autoload.php'; // autoload may already handled by your frameworkuse function IsDeprecated\isDeprecatedCore;
$function = function () {
mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
};//on php 7.1
var_dump(isDeprecatedCore($function)); // true//on php 7.0
var_dump(isDeprecatedCore($function)); // false// Usage Example:
if (isDeprecatedCore($function)) {
// alternative function, eg: openssl ...
} else {
$function();
}
```Limitation
----------For Core PHP Functions or user function with condition (T_IF or T_SWITCH token), the function passed actually need to be called. It ensure that we don't get error during call deprecated function, and we can use alternative function if the `isDeprecatedCore()` returns true with call of `isDeprecatedWithActualCall`.
Contributing
------------
Contributions are very welcome. Please read [CONTRIBUTING.md](https://github.com/samsonasik/IsDeprecated/blob/master/CONTRIBUTING.md)