Skip to content

Instantly share code, notes, and snippets.

@ControlledChaos
Forked from sheabunge/autoload.php
Created January 28, 2020 07:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ControlledChaos/0fc49ab30c55716ac4ad6f7b6ca95791 to your computer and use it in GitHub Desktop.
Save ControlledChaos/0fc49ab30c55716ac4ad6f7b6ca95791 to your computer and use it in GitHub Desktop.
Basic PHP class autoloader that follows the WordPress coding standards for class names and class filenames
<?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 = strtolower( $class_file );
$class_file = str_replace( '_', '-', $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 __DIR__ . '/php/' . $class_path . '/class-' . $class_file . '.php';
}
spl_autoload_register( __NAMESPACE__ . '\autoload' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment