<?php

namespace Shea\Example_Plugin;

/**
 * Enable autoloading of plugin classes in namespace.
 *
 * @param $class_name
 */
function autoload( $class_name ) {

	// Only autoload classes from this namespace.
	if ( false === strpos( $class_name, __NAMESPACE__ ) ) {
		return;
	}

	// Remove namespace from class name.
	$class_file = str_replace( __NAMESPACE__ . '\\', '', $class_name );

	// Convert class name format to file name format.
	$class_file = str_replace( '_', '-', strtolower( $class_file ) );

	// Convert sub-namespaces into directories.
	$class_path = explode( '\\', $class_file );
	$class_file = array_pop( $class_path );
	$class_path = implode( '/', $class_path );

	// Load the class.
	require_once sprintf( '%s/php/%s/class-%s.php', __DIR__, $class_path, $class_file );
}

spl_autoload_register( __NAMESPACE__ . '\autoload' );