/** * Class's file loader * * EN: Load the class's file automaticly. * ID: Fungis untuk me-load file class secara otomatis. * * @access public * @param string * @return void * @since version 0.1 */ function __autoload($class_name) { //EN: Strip class name from folder prefix. $var_name = Panada::var_name($class_name); $Panada = Panada::instance(); //EN: No need to execute the rest if properties already exists. if (isset($Panada->{$var_name})) { return; } //EN: Explode the class name base on '_' to get folder name. $prefix = explode('_', $class_name); //EN: Folder where file located. $folder = strtolower($prefix[0]); //EN: Reconstruct file name and folder location. $file = $folder . '/' . $var_name; //EN: Are we trying to load a library file? if ($folder == 'library') { //EN: Does the file exist in main library folder? if (file_exists($libsys_file = GEAR . $file . '.php')) { $class_file = $libsys_file; } else { if (file_exists($apps_file = APPLICATION . $file . '.php')) { $class_file = $apps_file; } else { Library_error::_500('<b>Error:</b> No <b>' . $var_name . '</b> file in library folder.'); } } } else { $class_file = APPLICATION . $file . '.php'; } include_once $class_file; //EN: Oke the file is exist, but does the class name exist? if (!class_exists($class_name)) { Library_error::_500('<b>Error:</b> No class <b>' . $class_name . '</b> exists in file ' . $class_file . '.'); } /** * EN: Exclude some class from caching. * ID: Abaikan beberap class yang tidak perlu di-cache. */ if ($class_name == 'Library_uri' || $class_name == 'Library_error' || $class_name == 'Library_time_execution' || $class_name == 'Controller_' . $var_name || $class_name == 'Library_active_record') { return; } $panada_cacher = Panada_cacher::instance(); if (!isset($Panada->{$var_name})) { $Panada->{$var_name} = new $class_name(); $panada_cacher->class_object[$var_name] = $Panada->{$var_name}; } $panada_cacher->defined_objet = array_keys(get_object_vars($Panada)); }
/** * Class's file loader * * EN: Load the class's file automaticly. * ID: Fungis untuk me-load file class secara otomatis. * * @access public * @param string * @return void * @since version 0.1 */ function __autoload($class_name) { //EN: Strip class name from folder prefix. $var_name = Panada::var_name($class_name); //EN: Convert undersore into slash. $file = str_replace('_', '/', $class_name); //EN: Explode the class name base on '_' to get folder name. $prefix = explode('_', $class_name); //EN: Are we trying to load a library file? if ($prefix[0] == 'library') { //EN: Does the file exist in main library folder? if (file_exists($libsys_file = THISPATH . GEAR . $file . '.php')) { $class_file = $libsys_file; } else { if (file_exists($apps_file = APPLICATION . $file . '.php')) { $class_file = $apps_file; } else { library_error::costume(500, '<h2>Error: No ' . $var_name . ' file in library folder.</h2>'); } } } else { $class_file = APPLICATION . $file . '.php'; } include_once $class_file; /** * EN: Exclude some class from caching. * ID: Abaikan beberap class yang tidak perlu di-cache. */ if ($class_name == 'library_uri' || $class_name == 'library_error' || $class_name == 'controller_' . $var_name) { return; } $panada_cacher = $GLOBALS['panada_cacher']; $Panada = Panada::instance(); if (!isset($Panada->{$var_name})) { $Panada->{$var_name} = new $class_name(); $panada_cacher->class_object[$var_name] = $Panada->{$var_name}; } $panada_cacher->defined_objet = array_keys(get_object_vars($Panada)); }