gruene-seele/dev/dhl-for-woocommerce/includes/class-pr-dhl-autoloader.php
Kevin Adametz 0f641ef33a Housekeeping: offene Dev-Dateien eingecheckt + Sidebar „Bestellungen"→„Versand"
- Sidebar-Menü „Bestellungen" in „Versand" umbenannt (layout-sidenav), sonst nur
  Blade-Formatierung.
- Entwicklungspläne in ISO-Datumsformat umbenannt (entwicklungsplan-aktualisiert-*).
- dev/dhl-for-woocommerce/ (DHL-Plugin) + dev/partnercenter-api.zip + PastedGraphic
  hinzugefügt.
- .claude/ bewusst NICHT eingecheckt (lokale Claude-Code-Konfiguration).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-28 12:04:41 +00:00

81 lines
1.7 KiB
PHP

<?php
if (! defined('ABSPATH')) {
exit;
}
class PR_DHL_Autoloader
{
/**
* Path to the includes directory.
*
* @var string
*/
private $include_path = '';
/**
* The Constructor.
*/
public function __construct()
{
spl_autoload_register([$this, 'autoload']);
$this->include_path = untrailingslashit(plugin_dir_path(PR_DHL_PLUGIN_FILE)).'/includes/';
}
/**
* Take a class name and turn it into a file name.
*
* @param string $class
* @return string
*/
private function get_file_name_from_class($class)
{
return 'class-'.str_replace('_', '-', $class).'.php';
}
/**
* Include a class file.
*
* @param string $path
* @return bool successful or not
*/
private function load_file($path)
{
if ($path && is_readable($path)) {
include_once $path;
return true;
}
return false;
}
/**
* Auto-load WC classes on demand to reduce memory consumption.
*
* @param string $class
*/
public function autoload($class)
{
$class = strtolower($class);
$file = $this->get_file_name_from_class($class);
$path = '';
if (strpos($class, 'pr_dhl_api') === 0) {
$path = $this->include_path.'pr-dhl-api/';
}
if (strpos($class, 'front_end') !== false) {
$path = $this->include_path.'front-end/';
}
// If the path is empty -> not DHL API class, or class couldn't load, try parent dir load
if (empty($path) || ! $this->load_file($path.$file)) {
$this->load_file($this->include_path.$file);
}
}
}
new PR_DHL_Autoloader;