marc-leopold/cms/plugins/rainlab/builder/validation/ReservedValidator.php

130 lines
2.7 KiB
PHP
Raw Permalink Normal View History

2019-02-25 14:56:59 +00:00
<?php namespace RainLab\Builder\Validation;
use Illuminate\Validation\Validator;
/**
* Reserved keyword validation.
*
* Validates for the use of any PHP-reserved keywords or constants, as specified from the PHP Manual
* http://php.net/manual/en/reserved.keywords.php
* http://php.net/manual/en/reserved.other-reserved-words.php
*/
class ReservedValidator extends Validator
{
protected $reserved = [
'__class__',
'__dir__',
'__file__',
'__function__',
'__halt_compiler',
'__line__',
'__method__',
'__namespace__',
'__trait__',
'abstract',
'and',
'array',
'as',
'bool',
'break',
'callable',
'case',
'catch',
'class',
'clone',
'const',
'continue',
'declare',
'default',
'die',
'do',
'echo',
'else',
'elseif',
'empty',
'enddeclare',
'endfor',
'endforeach',
'endif',
'endswitch',
'endwhile',
'eval',
'exit',
'extends',
'false',
'final',
'finally',
'float',
'for',
'foreach',
'function',
'global',
'goto',
'if',
'implements',
'include',
'include_once',
'instanceof',
'insteadof',
'int',
'interface',
'isset',
'iterable',
'list',
'mixed',
'namespace',
'new',
'null',
'numeric',
'object',
'or',
'print',
'private',
'protected',
'public',
'require',
'require_once',
'resource',
'return',
'static',
'string',
'switch',
'throw',
'trait',
'true',
'try',
'unset',
'use',
'var',
'void',
'while',
'xor',
'yield'
];
/**
* Reserved keyword validator.
*
* @param string $attribute
* @param mixed $value
* @param array $parameters
* @return bool
*/
public function validateReserved($attribute, $value, $parameters)
{
return !in_array(strtolower($value), $this->reserved);
}
/**
* @param $message
* @param $attribute
* @param $rule
* @param $parameters
* @return mixed
*/
public function replaceReserved($message, $attribute, $rule, $parameters)
{
return $this->replaceAttributePlaceholder(e(trans('rainlab.builder::lang.validation.reserved')), ucfirst($this->getDisplayableAttribute($attribute)));
}
}