Ejemplo n.º 1
0
Archivo: gear.php Proyecto: erxn/siemas
/**
 * 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));
}
Ejemplo n.º 2
0
/**
 * 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));
}