Skip to content

Commit

Permalink
Merge pull request #2 from publishpress/development
Browse files Browse the repository at this point in the history
Add the autoloader
  • Loading branch information
andergmartins authored Apr 28, 2023
2 parents c18e9c5 + 9fa0602 commit f0ac8a1
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/autoload.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

use PublishPress\WordPressEDDLicense\Autoloader;

add_action('plugins_loaded', function () {
if (! defined('PUBLISHPRESS_WORDPRESS_EDD_LICENSE_LOADED')) {
if (! class_exists('PublishPress\\WordPressEDDLicense\\Autoloader')) {
require_once __DIR__ . '/classes/Autoloader.php';
}

Autoloader::register();

define('PUBLISHPRESS_WORDPRESS_EDD_LICENSE_LOADED', true);
}
}, -125, 0);
51 changes: 51 additions & 0 deletions src/classes/Autoloader.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php

namespace PublishPress\WordPressEDDLicense;

class Autoloader
{
/**
* Register the autoloader with spl_autoload_register
*
* @return void
*/
public static function register()
{
spl_autoload_register(array(new self(), 'autoload'));
}

/**
* Autoload function that loads classes based on the namespace and class name
*
* @param string $class The fully-qualified class name
*
* @return void
*/
public static function autoload($class)
{
// base directory for the namespace prefix
$base_dir = __DIR__ . '/';

// namespace prefix
$prefix = __NAMESPACE__ . '\\';

// does the class use the namespace prefix?
$len = strlen($prefix);

if (strncmp($prefix, $class, $len) !== 0) {
// no, move to the next registered autoloader
return;
}

// get the relative class name
$relative_class = substr($class, $len);

// replace the namespace prefix with the base directory, replace namespace separators with directory separators
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';

// if the file exists, require it
if (file_exists($file)) {
require $file;
}
}
}

0 comments on commit f0ac8a1

Please sign in to comment.