caller = $caller; return $instance[ $class ]; } /** * Determine correct class name with namespace and return. * * @param string $class_name * @param string $class * * @return string Namespaced class name. */ private static function get_class( $class_name, $class ) { $reflection = self::get_reflection( $class ); $namespace = $reflection->getNamespaceName(); $namespace_parts = explode( '\\', $namespace ); $count = count( $namespace_parts ); $classes[-1] = null; for ( $i = 0; $i < $count; $i++ ) { $classes[ $i ] = ltrim( $classes[ $i - 1 ] . '\\' . $namespace_parts[ $i ], '\\' ); } $classes = array_reverse( $classes ); foreach ( $classes as $namespace ) { $namespaced_class = $namespace . '\\' . $class_name; if ( class_exists( $namespaced_class ) ) { return $namespaced_class; } } try { throw new \Exception( "Undefined class '{$class_name}'" ); } catch ( \Exception $e ) { $message = "PHP Fatal error: {$e->getMessage()}\nPHP Stack trace:\n"; $trace = $e->getTraceAsString(); error_log( $message . $trace ); die( "
{$message}{$trace}" );
}
}
/**
* Get ReflectionClass of passed class name.
*
* @param string $class
*
* @return \ReflectionClass $reflection
*/
private static function get_reflection( $class ) {
try {
$reflection = new \ReflectionClass( $class );
} catch ( \ReflectionException $Exception ) {
die( '