<?php
class PHPReservedWords {
public function isWordReserved($args) {
$word = $args['word'];
if($this->GetPHPReservedWordsHash()[$word]) {
return TRUE;
}
return FALSE;
}
public function GetPHPReservedWordsHash() {
if($this->word_hash) {
return $this->word_hash;
}
$hash = [];
foreach($this->GetPHPReservedWords() as $word) {
$hash[$word] = TRUE;
}
return $this->word_hash = $hash;
}
public function GetPHPReservedWords() {
return [
# Primary Source: https://w...content-available-to-author-only...p.net/manual/en/reserved.php
# ----------------------------------------------------------
# List 1 of 4: https://w...content-available-to-author-only...p.net/manual/en/reserved.keywords.php
# ----------------------------------------------------------------
'__halt_compiler',
'abstract',
'and',
'array',
'as',
'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',
'final',
'finally',
'fn', # (as of PHP 7.4)
'for',
'foreach',
'function',
'global',
'goto',
'if',
'implements',
'include',
'include_once',
'instanceof',
'insteadof',
'interface',
'isset',
'list',
'match', # (as of PHP 8.0)
'namespace',
'new',
'or',
'print',
'private',
'protected',
'public',
'readonly', # (as of PHP 8.1.0)
'require',
'require_once',
'return',
'static',
'switch',
'throw',
'trait',
'try',
'unset()',
'use',
'var',
'while',
'xor',
'yield',
'yield from',
# List 2 of 4: https://w...content-available-to-author-only...p.net/manual/en/reserved.classes.php
# ---------------------------------------------------------------
'Directory',
'stdClass',
'__PHP_Incomplete_Class',
'Exception',
'ErrorException',
'php_user_filter',
'Closure',
'Generator',
'ArithmeticError',
'AssertionError',
'DivisionByZeroError',
'Error',
'Throwable',
'ParseError',
'TypeError',
'self',
'static',
'parent',
# List 3 of 4: https://w...content-available-to-author-only...p.net/manual/en/reserved.constants.php
# ---------------------------------------------------------------
'PHP_VERSION',
'PHP_MAJOR_VERSION',
'PHP_MINOR_VERSION',
'PHP_RELEASE_VERSION',
'PHP_VERSION_ID',
'PHP_EXTRA_VERSION',
'PHP_ZTS',
'PHP_DEBUG',
'PHP_MAXPATHLEN',
'PHP_OS',
'PHP_OS_FAMILY',
'PHP_SAPI',
'PHP_EOL',
'PHP_INT_MAX',
'PHP_INT_MIN',
'PHP_INT_SIZE',
'PHP_FLOAT_DIG',
'PHP_FLOAT_EPSILON',
'PHP_FLOAT_MIN',
'PHP_FLOAT_MAX',
'DEFAULT_INCLUDE_PATH',
'PEAR_INSTALL_DIR',
'PEAR_EXTENSION_DIR',
'PHP_EXTENSION_DIR',
'PHP_PREFIX',
'PHP_BINDIR',
'PHP_BINARY',
'PHP_MANDIR',
'PHP_LIBDIR',
'PHP_DATADIR',
'PHP_SYSCONFDIR',
'PHP_LOCALSTATEDIR',
'PHP_CONFIG_FILE_PATH',
'PHP_CONFIG_FILE_SCAN_DIR',
'PHP_SHLIB_SUFFIX',
'PHP_FD_SETSIZE',
'E_ERROR',
'E_WARNING',
'E_PARSE',
'E_NOTICE',
'E_CORE_ERROR',
'E_CORE_WARNING',
'E_COMPILE_ERROR',
'E_COMPILE_WARNING',
'E_USER_ERROR',
'E_USER_WARNING',
'E_USER_NOTICE',
'E_RECOVERABLE_ERROR',
'E_DEPRECATED',
'E_USER_DEPRECATED',
'E_ALL',
'E_STRICT',
'true',
'false',
'null',
'PHP_WINDOWS_EVENT_CTRL_C',
'PHP_WINDOWS_EVENT_CTRL_BREAK',
# List 4 of 4: https://w...content-available-to-author-only...p.net/manual/en/reserved.other-reserved-words.php
# ---------------------------------------------------------------
'int',
'float',
'bool',
'string',
'true',
'false',
'null',
'void', # (as of PHP 7.1)
'iterable', # (as of PHP 7.1)
'object', # (as of PHP 7.2)
'resource',
'mixed',
'numeric',
];
}
}
$reserved_words = new PHPReservedWords();
print($reserved_words->isWordReserved(['word'=>'new']));
PD9waHAKCgljbGFzcyBQSFBSZXNlcnZlZFdvcmRzIHsKCQlwdWJsaWMgZnVuY3Rpb24gaXNXb3JkUmVzZXJ2ZWQoJGFyZ3MpIHsKCQkJJHdvcmQgPSAkYXJnc1snd29yZCddOwoJCQkKCQkJaWYoJHRoaXMtPkdldFBIUFJlc2VydmVkV29yZHNIYXNoKClbJHdvcmRdKSB7CgkJCQlyZXR1cm4gVFJVRTsKCQkJfQoJCQkKCQkJcmV0dXJuIEZBTFNFOwoJCX0KCQkKCQlwdWJsaWMgZnVuY3Rpb24gR2V0UEhQUmVzZXJ2ZWRXb3Jkc0hhc2goKSB7CgkJCWlmKCR0aGlzLT53b3JkX2hhc2gpIHsKCQkJCXJldHVybiAkdGhpcy0+d29yZF9oYXNoOwoJCQl9CgkJCQoJCQkkaGFzaCA9IFtdOwoJCQkKCQkJZm9yZWFjaCgkdGhpcy0+R2V0UEhQUmVzZXJ2ZWRXb3JkcygpIGFzICR3b3JkKSB7CgkJCQkkaGFzaFskd29yZF0gPSBUUlVFOwoJCQl9CgkJCQoJCQlyZXR1cm4gJHRoaXMtPndvcmRfaGFzaCA9ICRoYXNoOwoJCX0KCQlwdWJsaWMgZnVuY3Rpb24gR2V0UEhQUmVzZXJ2ZWRXb3JkcygpIHsKCQkJcmV0dXJuIFsKCQkJCQkJIyBQcmltYXJ5IFNvdXJjZTogaHR0cHM6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLm5ldC9tYW51YWwvZW4vcmVzZXJ2ZWQucGhwCgkJCQkJCSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJCQkJCQkKCQkJCQkjIExpc3QgMSBvZiA0OiBodHRwczovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAubmV0L21hbnVhbC9lbi9yZXNlcnZlZC5rZXl3b3Jkcy5waHAKCQkJCQkjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCQkJCgkJCQknX19oYWx0X2NvbXBpbGVyJywKCQkJCSdhYnN0cmFjdCcsCgkJCQknYW5kJywKCQkJCSdhcnJheScsCgkJCQknYXMnLAoJCQkJJ2JyZWFrJywKCQkJCSdjYWxsYWJsZScsCgkJCQknY2FzZScsCgkJCQknY2F0Y2gnLAoJCQkJJ2NsYXNzJywKCQkJCSdjbG9uZScsCgkJCQknY29uc3QnLAoJCQkJJ2NvbnRpbnVlJywKCQkJCSdkZWNsYXJlJywKCQkJCSdkZWZhdWx0JywKCQkJCSdkaWUnLAoJCQkJJ2RvJywKCQkJCSdlY2hvJywKCQkJCSdlbHNlJywKCQkJCSdlbHNlaWYnLAoJCQkJJ2VtcHR5JywKCQkJCSdlbmRkZWNsYXJlJywKCQkJCSdlbmRmb3InLAoJCQkJJ2VuZGZvcmVhY2gnLAoJCQkJJ2VuZGlmJywKCQkJCSdlbmRzd2l0Y2gnLAoJCQkJJ2VuZHdoaWxlJywKCQkJCSdldmFsJywKCQkJCSdleGl0JywKCQkJCSdleHRlbmRzJywKCQkJCSdmaW5hbCcsCgkJCQknZmluYWxseScsCgkJCQknZm4nLAkJCSMgKGFzIG9mIFBIUCA3LjQpCgkJCQknZm9yJywKCQkJCSdmb3JlYWNoJywKCQkJCSdmdW5jdGlvbicsCgkJCQknZ2xvYmFsJywKCQkJCSdnb3RvJywKCQkJCSdpZicsCgkJCQknaW1wbGVtZW50cycsCgkJCQknaW5jbHVkZScsCgkJCQknaW5jbHVkZV9vbmNlJywKCQkJCSdpbnN0YW5jZW9mJywKCQkJCSdpbnN0ZWFkb2YnLAoJCQkJJ2ludGVyZmFjZScsCgkJCQknaXNzZXQnLAoJCQkJJ2xpc3QnLAoJCQkJJ21hdGNoJywJCSMgKGFzIG9mIFBIUCA4LjApCgkJCQknbmFtZXNwYWNlJywKCQkJCSduZXcnLAoJCQkJJ29yJywKCQkJCSdwcmludCcsCgkJCQkncHJpdmF0ZScsCgkJCQkncHJvdGVjdGVkJywKCQkJCSdwdWJsaWMnLAoJCQkJJ3JlYWRvbmx5JywJCSMgKGFzIG9mIFBIUCA4LjEuMCkKCQkJCSdyZXF1aXJlJywKCQkJCSdyZXF1aXJlX29uY2UnLAoJCQkJJ3JldHVybicsCgkJCQknc3RhdGljJywKCQkJCSdzd2l0Y2gnLAoJCQkJJ3Rocm93JywKCQkJCSd0cmFpdCcsCgkJCQkndHJ5JywKCQkJCSd1bnNldCgpJywKCQkJCSd1c2UnLAoJCQkJJ3ZhcicsCgkJCQknd2hpbGUnLAoJCQkJJ3hvcicsCgkJCQkneWllbGQnLAoJCQkJJ3lpZWxkIGZyb20nLAoJCQkJCQkKCQkJCQkjIExpc3QgMiBvZiA0OiBodHRwczovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAubmV0L21hbnVhbC9lbi9yZXNlcnZlZC5jbGFzc2VzLnBocAoJCQkJCSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkJCQkKCQkJCSdEaXJlY3RvcnknLAoJCQkJJ3N0ZENsYXNzJywKCQkJCSdfX1BIUF9JbmNvbXBsZXRlX0NsYXNzJywKCQkJCSdFeGNlcHRpb24nLAoJCQkJJ0Vycm9yRXhjZXB0aW9uJywKCQkJCSdwaHBfdXNlcl9maWx0ZXInLAoJCQkJJ0Nsb3N1cmUnLAoJCQkJJ0dlbmVyYXRvcicsCgkJCQknQXJpdGhtZXRpY0Vycm9yJywKCQkJCSdBc3NlcnRpb25FcnJvcicsCgkJCQknRGl2aXNpb25CeVplcm9FcnJvcicsCgkJCQknRXJyb3InLAoJCQkJJ1Rocm93YWJsZScsCgkJCQknUGFyc2VFcnJvcicsCgkJCQknVHlwZUVycm9yJywKCQkJCSdzZWxmJywKCQkJCSdzdGF0aWMnLAoJCQkJJ3BhcmVudCcsCgkJCQkJCQoJCQkJCSMgTGlzdCAzIG9mIDQ6IGh0dHBzOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLmNvbnN0YW50cy5waHAKCQkJCQkjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJCQkJCQoJCQkJJ1BIUF9WRVJTSU9OJywKCQkJCSdQSFBfTUFKT1JfVkVSU0lPTicsCgkJCQknUEhQX01JTk9SX1ZFUlNJT04nLAoJCQkJJ1BIUF9SRUxFQVNFX1ZFUlNJT04nLAoJCQkJJ1BIUF9WRVJTSU9OX0lEJywKCQkJCSdQSFBfRVhUUkFfVkVSU0lPTicsCgkJCQknUEhQX1pUUycsCgkJCQknUEhQX0RFQlVHJywKCQkJCSdQSFBfTUFYUEFUSExFTicsCgkJCQknUEhQX09TJywKCQkJCSdQSFBfT1NfRkFNSUxZJywKCQkJCSdQSFBfU0FQSScsCgkJCQknUEhQX0VPTCcsCgkJCQknUEhQX0lOVF9NQVgnLAoJCQkJJ1BIUF9JTlRfTUlOJywKCQkJCSdQSFBfSU5UX1NJWkUnLAoJCQkJJ1BIUF9GTE9BVF9ESUcnLAoJCQkJJ1BIUF9GTE9BVF9FUFNJTE9OJywKCQkJCSdQSFBfRkxPQVRfTUlOJywKCQkJCSdQSFBfRkxPQVRfTUFYJywKCQkJCSdERUZBVUxUX0lOQ0xVREVfUEFUSCcsCgkJCQknUEVBUl9JTlNUQUxMX0RJUicsCgkJCQknUEVBUl9FWFRFTlNJT05fRElSJywKCQkJCSdQSFBfRVhURU5TSU9OX0RJUicsCgkJCQknUEhQX1BSRUZJWCcsCgkJCQknUEhQX0JJTkRJUicsCgkJCQknUEhQX0JJTkFSWScsCgkJCQknUEhQX01BTkRJUicsCgkJCQknUEhQX0xJQkRJUicsCgkJCQknUEhQX0RBVEFESVInLAoJCQkJJ1BIUF9TWVNDT05GRElSJywKCQkJCSdQSFBfTE9DQUxTVEFURURJUicsCgkJCQknUEhQX0NPTkZJR19GSUxFX1BBVEgnLAoJCQkJJ1BIUF9DT05GSUdfRklMRV9TQ0FOX0RJUicsCgkJCQknUEhQX1NITElCX1NVRkZJWCcsCgkJCQknUEhQX0ZEX1NFVFNJWkUnLAoJCQkJJ0VfRVJST1InLAoJCQkJJ0VfV0FSTklORycsCgkJCQknRV9QQVJTRScsCgkJCQknRV9OT1RJQ0UnLAoJCQkJJ0VfQ09SRV9FUlJPUicsCgkJCQknRV9DT1JFX1dBUk5JTkcnLAoJCQkJJ0VfQ09NUElMRV9FUlJPUicsCgkJCQknRV9DT01QSUxFX1dBUk5JTkcnLAoJCQkJJ0VfVVNFUl9FUlJPUicsCgkJCQknRV9VU0VSX1dBUk5JTkcnLAoJCQkJJ0VfVVNFUl9OT1RJQ0UnLAoJCQkJJ0VfUkVDT1ZFUkFCTEVfRVJST1InLAoJCQkJJ0VfREVQUkVDQVRFRCcsCgkJCQknRV9VU0VSX0RFUFJFQ0FURUQnLAoJCQkJJ0VfQUxMJywKCQkJCSdFX1NUUklDVCcsCgkJCQkndHJ1ZScsCgkJCQknZmFsc2UnLAoJCQkJJ251bGwnLAoJCQkJJ1BIUF9XSU5ET1dTX0VWRU5UX0NUUkxfQycsCgkJCQknUEhQX1dJTkRPV1NfRVZFTlRfQ1RSTF9CUkVBSycsCgkJCQkJCQoJCQkJCSMgTGlzdCA0IG9mIDQ6IGh0dHBzOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLm90aGVyLXJlc2VydmVkLXdvcmRzLnBocAoJCQkJCSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkJCQkJCgkJCQknaW50JywKCQkJCSdmbG9hdCcsCgkJCQknYm9vbCcsCgkJCQknc3RyaW5nJywKCQkJCSd0cnVlJywKCQkJCSdmYWxzZScsCgkJCQknbnVsbCcsCgkJCQkndm9pZCcsCQkJIyAoYXMgb2YgUEhQIDcuMSkKCQkJCSdpdGVyYWJsZScsCQkjIChhcyBvZiBQSFAgNy4xKQoJCQkJJ29iamVjdCcsCQkjIChhcyBvZiBQSFAgNy4yKQoJCQkJJ3Jlc291cmNlJywKCQkJCSdtaXhlZCcsCgkJCQknbnVtZXJpYycsCgkJCV07CgkJfQoJfQoKCiRyZXNlcnZlZF93b3JkcyA9IG5ldyBQSFBSZXNlcnZlZFdvcmRzKCk7CnByaW50KCRyZXNlcnZlZF93b3Jkcy0+aXNXb3JkUmVzZXJ2ZWQoWyd3b3JkJz0+J25ldyddKSk7