<?php
function loadClass($name) {
$className = ltrim($name, '\\');
if($lastNsPos = strrpos($className, '\\')) { /*имеется namespace, значит vendor*/
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = __DIR__.'/../../vendor/';
$fileName .= str_replace('\\', '/', $namespace).'/';
}
else { /*в modules */
$fileName = __DIR__.'/../';
if(strpos($className, 'c_') === 0) { //контроллер
$className = substr($className, strlen('c_'));
$className = $className.'/'.'c_'.$className;
}
elseif(strpos($className, '_') !== false) { //подкласс
$className = str_replace('_', '/', $className);
}
else { // класс
$className = $className.'/'.$className;
}
}
$fileName .= $className.'.class.php';
//Здесь именно include, т.к. require вывалит фатальную ошибку
echo $fileName; echo "\n";
}
loadClass('sdf_fdffd_ffff');
loadClass('sdf');
loadClass('c_sdf_fdffd_ffff');
loadClass('c_sdf');
loadClass('c\sdf\5tttt');
preferences:
27.94 ms | 402 KiB | 5 Q