* @author Marc McIntyre * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600) * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence * @link http://pear.php.net/package/PHP_CodeSniffer */ /** * Generic_Sniffs_PHP_DeprecatedFunctionsSniff. * * Discourages the use of deprecated functions that are kept in PHP for * compatibility with older versions. * * @category PHP * @package PHP_CodeSniffer * @author Sebastian Bergmann * @author Greg Sherwood * @author Marc McIntyre * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600) * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence * @version Release: @package_version@ * @link http://pear.php.net/package/PHP_CodeSniffer */ class Generic_Sniffs_PHP_DeprecatedFunctionsSniff extends Generic_Sniffs_PHP_ForbiddenFunctionsSniff { /** * A list of forbidden functions with their alternatives. * * The value is NULL if no alternative exists. IE, the * function should just not be used. * * @var array(string => string|null) */ public $forbiddenFunctions = array(); /** * Constructor. * * Uses the Reflection API to get a list of deprecated functions. */ public function __construct() { $functions = get_defined_functions(); foreach ($functions['internal'] as $functionName) { $function = new ReflectionFunction($functionName); if (method_exists($function, 'isDeprecated') === false) { break; } if ($function->isDeprecated() === true) { $this->forbiddenFunctions[$functionName] = null; } } }//end __construct() /** * Generates the error or warning for this sniff. * * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. * @param int $stackPtr The position of the forbidden function * in the token array. * @param string $function The name of the forbidden function. * @param string $pattern The pattern used for the match. * * @return void */ protected function addError($phpcsFile, $stackPtr, $function, $pattern=null) { $data = array($function); $error = 'Function %s() has been deprecated'; $type = 'Deprecated'; if ($this->error === true) { $phpcsFile->addError($error, $stackPtr, $type, $data); } else { $phpcsFile->addWarning($error, $stackPtr, $type, $data); } }//end addError() }//end class