public static function analyze($path_to_folder, $map_calsses = true) { //Log::writeInfo( "ClassManager start analyze classes", "file" ); if ($path_to_folder == false) { throw new CodeRunnerException("Wrong path to code source"); } $all_files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path_to_folder)); $php_files = new RegexIterator($all_files, '/\\.php$/'); $classes = []; $namespaces_path = []; foreach ($php_files as $php_file) { $class_info = []; $class_info['class_name'] = basename($php_file->getRealPath(), ".php"); $class_info['namespace'] = self::getNamespace(file_get_contents($php_file->getRealPath())); if ($class_info['namespace'] != '') { $class_info['full_name'] = $class_info['namespace'] . '\\' . $class_info['class_name']; } else { $class_info['full_name'] = $class_info['class_name']; } $class_info['path'] = $php_file->getRealPath(); self::putToHolder($class_info, 'class_name'); $namespaces_path[$class_info['namespace']] = pathinfo($class_info['path'])['dirname']; //key = namespace key = path to folder; $classes[] = ['name' => $class_info['class_name'], 'namespace' => $class_info['namespace'] . "\\" . $class_info['class_name']]; } foreach ($namespaces_path as $namespace => $path) { Autoload::addNamespace($namespace, $path); // add autoloading for user classes } if ($map_calsses == true) { Backendless::ignoreMapException(); foreach ($classes as $class) { Backendless::mapTableToClass($class['name'], $class['namespace']); // set mapping for SDK. } } }
public static function analyze() { Log::writeInfo("ClassManager start analyze classes", "file"); $all_files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(PathBuilder::getClasses())); $php_files = new RegexIterator($all_files, '/\\.php$/'); $classes_namespaces = []; foreach ($php_files as $php_file) { $class_info = []; //$class_info["parent_class"] = self::getParentClass( file_get_contents( $php_file->getRealPath() ) ); $class_info['namespace'] = str_replace("/", "\\", trim(dirname(substr($php_file->getRealPath(), strlen(PathBuilder::getClasses()))), "/")); $class_info['class_name'] = basename($php_file->getRealPath(), ".php"); $class_info['path'] = $php_file->getRealPath(); self::putToHolder($class_info); $classes_namespaces[$class_info['namespace']] = pathinfo($class_info["path"])["dirname"]; //key = namespace key = path to folder; Backendless::mapTableToClass($class_info['class_name'], $class_info['namespace'] . "\\" . $class_info['class_name']); // set mapping for SDK. } foreach ($classes_namespaces as $namespace => $path) { Autoload::addNamespace($namespace, $path); // add autoloading for user classes } Log::writeInfo("ClassManager finished analyze classes", "file"); }
<?php //enable the display of errors error_reporting(E_ALL); ini_set('display_errors', true); declare (ticks=1); use backendless\core\lib\Autoload; use backendless\core\CodeRunnerLoader; // define short constants define('DS', DIRECTORY_SEPARATOR); define('PS', PATH_SEPARATOR); define('BP', dirname(dirname(__FILE__))); ini_set('default_socket_timeout', -1); //include file with CodeRunner autoloader include 'lib' . DS . 'Autoload.php'; //include file with predis autoloader include 'lib' . DS . 'predis' . DS . 'autoload.php'; //include file with backendless SDK autoloader include '..' . DS . 'lib' . DS . 'backendless' . DS . 'autoload.php'; // initialize app autoloading Autoload::register(); Autoload::addNamespace('backendless\\core', BP . DS . 'core'); // initialize and run application CodeRunnerLoader::load($argc, $argv);