PHP/Laravel 获取 class 名称中的最后一个词:App\Models\Example\Class;并将其小写:class

PHP/Laravel get last word in a a class name: App\Models\Example\Class; and lowercase it: class

有人看到 simpler/cleaner 解决这个问题的方法吗?我有存储为完整 class 名称的多态类型,我需要访问 class 中的最后一个词并将其小写以找到配置文件:

示例:$this->ant_type = App\Models\AntTypes\Request

$antTypeArray = explode('\', $this->ant_type);
$workflow = strtolower(array_values(array_slice($antTypeArray, -1))[0]);

它当然工作得很好,只是好奇是否有更简单的方法来实现它。我正在使用 Laravel 5.7.

找到最后一个\,取从那个点+1到字符串末尾的子串:

strtolower(substr($str, strrpos($str, '\') + 1))

代码因简短而打高尔夫球,但产生 E_NOTICE

strtolower(end(explode('\',$str)))

我想你可以用 PHP 做到这一点 ReflectionClass

$workflow = strtolower((new \ReflectionClass($this->ant_type))->getShortName());