0

Hi all.

Does anyone have a good autoloader script for namespace classes ?

Namespace is identical to the file structure.

2
Contributors
3
Replies
21
Views
4 Years
Discussion Span
Last Post by Squidge
0

ok, noted the above is probably a bad post, so to extend:

I have gone trhough many samples from goolge, one i have come across is the following:

spl_autoload_register(function ($className) {

    # Usually I would just concatenate directly to $file variable below
    # this is just for easy viewing
        $ds = DIRECTORY_SEPARATOR;
        $dir = __DIR__;

    // replace namespace separator with directory separator (prolly not required)
        $className = strtr($className, '\\', $ds);

    // get full name of file containing the required class
        $file = "{$dir}{$ds}{$classname}.php";

    // get file if it is readable
        if (is_readable($file))
            require_once $file;
});

Which seems fine - if you are calling the files from the same, or below folder structure.

My folder structure mimicks that of my namespace structure as per PSR-0

So my question:

How can this be adopted to be used globally?

0

@diafol

Many thanks.

So from the link i have opted for, what i am asuming, the easier option:

file will be called autoLoader.php and added to the .ini include PATH to load in.

<?php
// autoload functions only
// loaded in order

#!! IMPORTANT !! -> Database connection load
function autoloadDataBase($className){
    $filename = 'classLib/dataBase/' . $className . '.php';

    if(is_readable($filename)){
        include $filename;
    }
}

function autoloadCRUD($className){

    $filename = "classLib/CRUD/" . $className .'.php';

    if(is_readable($filename)){
        include $filename;
    }

}

function autoloadRSS($className){

    $filename = "classLib/RSS/" . $className .'.php';

    if(is_readable($filename)){
        include $filename;
    }

}

spl_autoload_register("autoloadDataBase");
spl_autoload_register("autoloadCRUD");
spl_autoload_register("autoloadRSS");

?>

I am guessing there are many ways to tidy this up, if anyone can suggest i am open to suggestions :)

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.