nagiosql/functions/Autoloader.php

65 lines
1.9 KiB
PHP

<?php
///////////////////////////////////////////////////////////////////////////////
//
// NagiosQL
///////////////////////////////////////////////////////////////////////////////
//
// (c) 2005-2018 by Martin Willisegger
//
// Project : NagiosQL
// Component : Autoloader Class
// Website : https://sourceforge.net/projects/nagiosql/
// Version : 3.4.0
// GIT Repo : https://gitlab.com/wizonet/NagiosQL
//
///////////////////////////////////////////////////////////////////////////////
namespace functions;
class Autoloader
{
// Define class variables
public $preBasePath = DIRECTORY_SEPARATOR;
/**
* Autoloader constructor.
*/
public function __construct()
{
spl_autoload_register(array($this, 'loadClass'));
}
/**
* @param string $strBasePath Base path of project
*/
public static function register($strBasePath)
{
$object = new Autoloader();
$object->preBasePath = $strBasePath;
}
/**
* Load class from path
* @param string $strClassName Class name
*/
public function loadClass($strClassName)
{
$className = ltrim($strClassName, '\\');
$fileName = '';
$lastNsPos = strrpos($className, '\\');
if ($lastNsPos != 0) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
$strFilePath1 = $this->preBasePath.$fileName;
$strFilePath2 = $this->preBasePath.'install/'.$fileName;
if (file_exists($strFilePath1) && is_readable($strFilePath1)) {
require_once $strFilePath1;
}
if (file_exists($strFilePath2) && is_readable($strFilePath2)) {
require_once $strFilePath2;
}
}
}