<?php
/**
* Generic_Sniffs_PHP_DeprecatedFunctionsSniff.
*
* PHP version 5
*
* @category PHP
* @package PHP_CodeSniffer
* @author Greg Sherwood <gsherwood@squiz.net>
* @author Marc McIntyre <mmcintyre@squiz.net>
* @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 <sb@sebastian-bergmann.de>
* @author Greg Sherwood <gsherwood@squiz.net>
* @author Marc McIntyre <mmcintyre@squiz.net>
* @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: 1.5.5
* @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)
*/
protected $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 ($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
?>