To people coming here by searching about namespaces, know that a consortium has studied about best practices in PHP, in order to allow developers to have common coding standards. These best practices are called "PHP Standard Recommendations" , also known as PSR. They are visible on this link : http://www.php-fig.org/psr Actually there are 5 coding standards categories : PSR-0 : Autoloading Standard , which goal is to make the use of Namespaces easier, in order to convert a namespace into a file path.PSR-1 : Basic Coding Standard , basically, standards :) PSR-2 : Coding Style Guide, where to put braces, how to write a class, etc.PSR-3 : Logger Interface , how to write a standard loggerPSR-4 : Improved Autoloading , to resolve more Namespaces into paths. The ones I want to point are PSR-0 and PSR-4 : they use namespaces to resolve a FQCN (Fully qualified class name = full namespace + class name) into a file path. Basic example, you have this directory structure :./src/Pierstoval/Tools/MyTool.phpThe namespacing PSR-0 or PSR-4 standard tells that you can transform this path into a FQCN.Read the principles of autoload if you need to know what it means, because it's almost mandatory ;) .Structure :{path}/autoloader.php{path}/index.php{path}/src/Pierstoval/Tools/MyTool.phpFiles :<?php include 'autoloader.php'; $tool = new Pierstoval/Tools/MyTool();?><?php namespace Pierstoval\Tools; class MyTool {}?><?php function loadClass($className) { $fileName = ''; $namespace = ''; $includePath = dirname(__FILE__).DIRECTORY_SEPARATOR.'src'; if (false !== ($lastNsPos = strripos($className, '\\'))) { $namespace = substr($className, 0, $lastNsPos); $className = substr($className, $lastNsPos + 1); $fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR; } $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php'; $fullFileName = $includePath . DIRECTORY_SEPARATOR . $fileName; if (file_exists($fullFileName)) { require $fullFileName; } else { echo 'Class "'.$className.'" does not exist.'; } } spl_autoload_register('loadClass'); ?> A standardized autoloader will get the class you want to instanciate (MyTool) and get the FQCN, transform it into a file path, and check if the file exists. If it does, it will <?php include(); ?> it, and if you wrote your class correctly, the class will be available within its correct namespace.Then, if you have the following code :<?php $tool = new Pierstoval/Tools/MyTool(); ?>The autoloader will transform the FQCN into this path :{path}/src/Pierstoval/Tools/MyTool.phpThis might be the best practices ever in PHP framework developments, such as Symfony or others.