65 lines
1.9 KiB
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;
|
|
}
|
|
}
|
|
}
|