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\TraitsCode
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;
}