public static function getExtensionMethod($class, $name) { $list =& self::$extMethods[strtolower($name)]; $cache =& $list[''][$class]; if (isset($cache)) { return $cache; } foreach ([$class] + class_parents($class) + class_implements($class) as $cl) { if (isset($list[$cl])) { return $cache = $list[$cl]; } } return $cache = FALSE; }
/** * Adding method to class. * * @param $name * @param null $callback * * @throws \Nette\MemberAccessException * @return callable|null */ public static function extensionMethod($name, $callback = NULL) { if (strpos($name, '::') === FALSE) { $class = get_called_class(); } else { list($class, $name) = explode('::', $name); } if ($callback === NULL) { return ObjectMixin::getExtensionMethod($class, $name); } else { ObjectMixin::setExtensionMethod($class, $name, $callback); } }