You are here

public static function NormalizeTrait::isCallable in Markdown 8.2

1 call to NormalizeTrait::isCallable()
NormalizeTrait::normalizeCallables in src/Traits/NormalizeTrait.php
Normalizes any callables provided so they can be stored in the database.

File

src/Traits/NormalizeTrait.php, line 14

Class

NormalizeTrait
Trait for providing normalization methods.

Namespace

Drupal\markdown\Traits

Code

public static function isCallable(&$value, &$callable = FALSE) {
  if (is_callable($value)) {
    return $value;
  }
  if (!is_array($value) || count($value) !== 2 || !isset($value[0]) || !isset($value[1]) || $value !== array_values($value) || !(is_object($value[0]) || is_string($value[0]) && strpos($value[0], '\\') !== FALSE) || !is_string($value[1]) || !preg_match('/[a-zA-Z][a-zA-Z0-9-_]+/', $value[1])) {
    return FALSE;
  }
  list($class, $method) = $value;
  if (is_object($class)) {
    $class = get_class($class);
  }
  try {
    $ref = new \ReflectionMethod($class, $method);
    $callable = $ref
      ->isPublic() && $ref
      ->isStatic();
    if ($callable) {
      $value = "{$class}::{$method}";
    }
  } catch (\ReflectionException $e) {

    // If a reflection couldn't be made, it's wasn't attempting to be
    // a callback.
    return FALSE;
  }
  return TRUE;
}