3v4l.org

run code in 300+ PHP versions simultaneously
<?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