for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Nip\Utility;
/**
* Class Oop
* @package Nip\Utility
*/
class Oop
{
* @param $class
* @return string
public static function basename($class)
$class = is_object($class) ? get_class($class) : $class;
return basename(str_replace('\\', '/', $class));
}
public static function classUsesTrait($class, $trait): bool
$traits = static::uses($class);
return isset($traits[$trait]);
* @param bool $recursive
* @return array
public static function uses($class, $recursive = true)
if (is_object($class)) {
$class = get_class($class);
if (class_exists($class) && $recursive == false) {
===
When comparing two booleans, it is generally considered safer to use the strict comparison operator.
return class_uses($class);
$results = [];
foreach (array_reverse(class_parents($class)) + [$class => $class] as $class) {
$class
$results += static::traitUses($class);
return array_unique($results);
* @param $trait
public static function traitUses($trait, $recursive = true)
$recursive
If this is a false-positive, you can also ignore this issue in your code via the ignore-unused annotation
ignore-unused
public static function traitUses($trait, /** @scrutinizer ignore-unused */ $recursive = true)
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.
$traits = class_uses($trait);
foreach ($traits as $trait) {
$trait
$traits += static::traitUses($trait);
return $traits;
* @param $name
* @return bool
public static function isTrait($name)
return trait_exists($name);
When comparing two booleans, it is generally considered safer to use the strict comparison operator.