A namespace is a naming convention which lets you express the intent of the file, module, and package. It groups your code into like functionality and purpose. It further protects your code from naming collisions of other code within the same website or application. Lastly, it makes your code more readable, purposeful, and declarative.
The namespace is the prefix to the code contained under it. Classes, interfaces, functions, and constants all receive the namespace as their fully qualified names.
Namespace is available in PHP 5.3.0 and up. It is not available or possible before that version.
Why is namespacing more readable?
Prefixing adds characters at the start of a name in order to prevent a naming collision. However, remember that with clean, quality code, you want to name your user-defined code with purposeful, declarative names. Functions, classes, and interfaces are named by what they do, i.e. the expected behavior when called. Variables and constants are named by the data they represent. Prefixing adds additional characters to the start of these purposeful names, thereby making it more difficult to read the intent. You have to read past the prefix in order to know what the function, for example, does.
With namespacing, the user-defined code is named specifically to comply with clean, quality coding standards. You can read the function, class, or whatever and know exactly what it does (assuming the author properly named it). Even when calling or using the code outside of its namespace, it is still more readable, as it is clear what the namespace is as compared to its name.