Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8960993
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 15, 20262026-06-15T15:47:05+00:00 2026-06-15T15:47:05+00:00

I have a problem in loading classes with spl_autoload_register when a namespace is implemented

  • 0

I have a problem in loading classes with spl_autoload_register when a namespace is implemented in a class.

the class autoloader below, but I have no problem loading any class when no namespace is used,

class autoloader
{
    /**
     * Set the property.
     */
    public $directory;
    public $recursive;

    /**
     * Receive the supplied data.
     * @string $directory
     * @array $recursive default: models
     */
    public function __construct($directory, $recursive = array('search' => 'models') ) 
    {
        # Store the data into the property.
        $this->directory = $directory;
        $this->recursive = $recursive;

        # When using spl_autoload_register() with class methods, it might seem that it can use only public methods, though it can use private/protected methods as well, if registered from inside the class:
        spl_autoload_register(array($this,'get_class'));

    }

    private function get_class($class_name)
    {
        # List all the class directories in the array.
        if ($this->recursive)
        {
            $array_directories =  self::get_recursive_directory($this->directory);
        }
        else
        {
            if (is_array($this->directory)) $array_directories =  $this->directory;
            else $array_directories =  array($this->directory);
        }

        # Set the class file name.
        $file_name = 'class_'.strtolower($class_name).'.php';

        # Loop the array.
        foreach($array_directories as $path_directory)
        {
            if(file_exists($path_directory.$file_name)) 
            {
                # There is no need to use include/require_once. Autoload is a fallback when the system can't find the class you are instantiating. 
                # If you've already included it once via an autoload then the system knows about it and won't run your autoload method again anyway. 
                # So, just use the regular include/require - they are faster.
                include $path_directory.$file_name;
            } 
        }

    }

    # However the memory consumption of this can be huge if you have a very large directory tree with only a few matches.
    # @source: http://stackoverflow.com/questions/9294543/search-and-list-specific-directories-only
    public function get_recursive_directory($directory)
    {
        # Create an object that allows us to iterate directories recursively.
        # Stolen from here: 
        # http://www.php.net/manual/en/class.recursivedirectoryiterator.php#102587
        $iterator = new RecursiveIteratorIterator
                    (
                        new RecursiveDirectoryIterator($directory),
                        RecursiveIteratorIterator::CHILD_FIRST
                    );

        # This will hold the result.
        $result = array();

        # Loop the directory contents.
        foreach ($iterator as $path) 
        {

            # If object is a directory and matches the search term ('models')...
            if ($path->isDir() && $path->getBasename() === $this->recursive['search']) 
            {

                # Add it to the result array.
                # Must replace the slash in the class - dunno why!
                $result[] = str_replace('\\', '/', $path).'/';
                //$result[] = (string) $path . '/';

            }

        }

        # Return the result in an array.
        return $result;
    }
}

a tag class for instance,

namespace hello;

class tag extends \core
{
}

now load the class via the autoloader class,

# Autoload the classes from the specific folder.
$autoloader = new autoloader("C:/wamp/www/website/local/applications/master/sides/models/", $recursive = false);

# Instantiate the tag.
$tag = new hello\tag($connection);

result,

Fatal error: Class ‘hello\tag’ not found in
C:\wamp\www\website\local\applications\master\sides\views\tags.php
on line 7

Any idea how I can fix my autoloader class so that I can load the classes whether there is a namespace or not?

EDIT:

The folder where I keep the classes and the class naming,

C:\wamp\www\website\local\applications\master\sides\models\

class_tag.php
class_something.php
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-15T15:47:06+00:00Added an answer on June 15, 2026 at 3:47 pm

    Your error is in your get_class() method. $class_name contains the fully qualified classname with it’s namespace. In your case you have to strip the namespace from your classname.

    $file_name = 'class_'.strtolower(array_pop(explode('\\', $class_name))).'.php';
    

    I highly recommend using PSR-0 standard for autoloading. If you will be using any libraries it is very likely that they are using the same standard and you only have one autoloader.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am loading some text dynamically into a div, but have the problem that
I have the following problem. I got a class PluginLoader which oversees loading of
I have problem while loading data into html select when users press or click
I have problem with lazy loading in many-to-many. There is no exception and there
I have a problem with loading data into an < object > using Javascript.
I have a problem with loading image with java 2ME. I have a image
i have a problem while loading a UITableView on UITabBarController, i got this error
I have problem with google map Loading and making center in my java script
I have a problem with the reference of a variable when loading a saved
I have a bizarre problem, IE 7 and 8 are not loading about 80%

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.