note 125441 added to function.class-alias

From: Date: Fri, 16 Oct 2020 06:48:06 +0000
Subject: note 125441 added to function.class-alias
Groups: php.notes 
Request: Send a blank email to php-notes+get-215599@lists.php.net to get a copy of this message
Check is alias: <?php /** * @param string $class Class name * @return bool */ function is_alias(string $class): bool { return $class !== (new ReflectionClass($class))->name; } ?> Get class aliases: <?php /** * @param string $class Class name * @param bool $throw Throw exception at error? * @return string[]|null Aliases or null at error in silent mode * @throws InvalidArgumentException Class not exists or it's alias */ function get_class_aliases(string $class, bool $throw = false): ?array { /** * @var array An array of defined classes: keys - classes, values - aliases */ static $classes = []; // check: class exists if (! class_exists($class, true)) { if ($throw) { throw new InvalidArgumentException('Class ' . $class . ' not exists'); } return null; } // refresh list $newClasses = array_diff(get_declared_classes(), array_keys($classes)); if ($newClasses) { $abc = range('a', 'z'); foreach ($newClasses as $newClass) { // fast check first char: class_alias() convert alias to lower case if (in_array($newClass[0], $abc, true)) { $realClass = (new ReflectionClass($newClass))->getName(); $classes[$newClass] = $newClass !== $realClass ? $realClass : null; } else { $classes[$newClass] = null; } } unset($abc, $newClasses); } // check: is alias? if (! empty($classes[$class])) { if ($throw) { throw new InvalidArgumentException($class . ' is alias for class ' . $classes[$class]); } return null; } // find aliases return array_keys($classes, $class, true); } ?> Usage: <?php class Foo {} class_alias('Foo', 'Bar'); class_alias('Bar', 'Baz'); $aliases = get_class_aliases('Foo', true); // ['bar', 'baz'] ?> ---- Server IP: 45.112.84.4 Probable Submitter: 185.85.3.172 (proxied: 31.129.215.166) ---- Manual Page -- http://php.net/manual/en/function.class-alias.php Edit -- https://master.php.net/note/edit/125441 Del: integrated -- https://master.php.net/note/delete/125441/integrated Del: useless -- https://master.php.net/note/delete/125441/useless Del: bad code -- https://master.php.net/note/delete/125441/bad+code Del: spam -- https://master.php.net/note/delete/125441/spam Del: non-english -- https://master.php.net/note/delete/125441/non-english Del: in docs -- https://master.php.net/note/delete/125441/in+docs Del: other reasons-- https://master.php.net/note/delete/125441 Reject -- https://master.php.net/note/reject/125441 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#215599) next »