Home Backend Development PHP Tutorial Examples of detailed explanation of PHP namespace usage

Examples of detailed explanation of PHP namespace usage

Aug 23, 2017 pm 01:48 PM
php usage space

The namespace is mainly to solve the problem of possible conflicts between classes and functions in the code. This article introduces the key features of PHP, namespace, including the definition of namespace and other knowledge points. Friends who need it can refer to it

Namespace is mainly to solve the problem of possible conflicts between classes and functions in the code. , while other languages ​​have had this feature for a long time, PHP came late. Its emergence gave birth to PSR-4, which also gave birth to the rise of Composer, so it is a very important feature.

Definition of namespace

A namespace is a container, which is mainly used to identify the classes and functions under it. Once a namespace is defined, the code below it belongs to this namespace, so the definition of the namespace should be at the very beginning of the code.

For the same package, the code in the same namespace or sub-namespace does not need to be defined in a PHP file. The code in the sub-namespace is to complete the work of a specific module. When combined, it becomes a Package complete namespace.

If the code you write does not define a namespace, it means that it belongs to the global namespace (\ symbol), so you can directly reference the class or function (without adding the \ symbol).

Three ways to reference namespace identifiers

(1) Fully-qualified name

is similar to the absolute path on the operating system, and It is the complete path, so there will be no misunderstanding when understanding it.

For example, in new \A\B\C, then C will be parsed to the C class under the A\B namespace.

(2) Qualified name

is similar to a relative path on the operating system. It contains part of the name and is referenced to the current namespace.

For example, if B\C() is called under namespace A, the finally referenced namespace is A\B\C().

(3) Unqualified name

is similar to Qualified name, but does not include sub-namespaces.

For example, if C() is called under the namespace A\B, the finally referenced namespace is A\B\C().

Illustrate the three citation methods through an example:


namespace \Example;
require_once "fnction.php";
class ClassA {}
function Function() {}
//完全限定名称
\Example\Function();
\Example\B\Function(); 
//限定名称
B\Function(); //指向 \Example\B\Function();
//非限定名称
$test = new ClassA(); //resolves to \Example\ClassA
Function(); //指向 \Example\Function
Copy after login

Note:

•Inside a namespace, if no definitions of functions and constants are found in the current scope, PHP will not report an error. Instead, look for it in the global namespace.

•Inside a namespace, if no class definition is found in the current scope, PHP will report an error directly and will not go to the global scope to find the corresponding class, so if you need to reference an internal or user-defined Class, the fully qualified name must be used.

Let’s take a simple example first. First write a piece of code (defined in the namespace) and name it function.php:


namespace Foo\Bar\subnamespace;
const FOO = 1;
function foo() 
{
  return "foo\r\n";
}
class foo 
{
  static function staticmethod()
  {
    return __METHOD__ . "\r\n" ;
  }
  function foofunction()
  {
    return __METHOD__ . "\r\n" ;
  }
}
Copy after login

Write another piece of code The code test.php is also the code under the namespace:


namespace secondsp;
include 'function.php';
class foo
{
  function foofunction()
  {
    return __METHOD__ . "\r\n" ;
  }
}
function is_file($file)
{
  return true ;
}
//非限定名称:实例化secondsp\foo类对象
$obj = new foo; 
echo $obj->foofunction();
//实例化Foo\Bar\subnamespace\foo 类对象
$obj = new Foo\Bar\subnamespace\foo ;
echo $obj->foofunction();
//代码会报错,在命名空间内部,假如无法找到当前命名空间下的类,则会报错
//$obj = new ArrayObject(array(1)); 
$obj = new \ArrayObject(array(1)); 
//在命名空间内部,假如无法找到当前命名空间下的函数或者常量,则会寻找 native function
echo strlen("nihao");
 //引用当前命名空间下的函数
var_dump(is_file('nihao')); //True
//引用全局函数
var_dump(\is_file('nihao')); //False
Copy after login

Import, alias

If you want to use the name If the space hierarchy is long and numerous, it is particularly troublesome to use. Therefore, you can use the use keyword to import namespaces, classes, constants, functions, etc., and then use them to directly reference the complete names. The alias keyword can rename imported classes and functions.

For example, how to use the use keyword, this code is under the global namespace:


include 'function.php';
use Foo\Bar\subnamespace\foo ;
$obj = new foo;
echo $obj->foofunction();
use Foo\Bar\subnamespace\foo as aliasfunname;
$obj = new aliasfunname;
echo $obj->foofunction();
use Foo\Bar\subnamespace ; 
$obj = new subnamespace\foo ;
echo $obj->foofunction();
use Foo\Bar\subnamespace as aliasname;
$obj = new aliasname\foo ;
echo $obj->foofunction();
//由于调用代码并不在命名空间内,所以对于全局的类,无需引入使用
$obj = new ArrayObject(array(1)); 
//导入一个函数
use function Foo\Bar\subnamespace\foo  ;
echo foo();
use function Foo\Bar\subnamespace\foo as func;
echo func();
use const Foo\Bar\subnamespace\FOO;
//echo FOO;
Copy after login

Summary:

•Unlike Python, the namespace in PHP is a semantic concept and has nothing to do with the location and layout of the specific code. In other words, code that uses the namespace needs to introduce its own library files (all files ), it doesn’t matter how the library files are organized; in Python, if there is an __init__.py file in a module or package, the Python parser will automatically import the files of the package or all modules.

•The concept of scope in PHP is very weak, and the global domain and the local domain are clearly distinguished. For example, variables in the global space cannot be referenced in functions or classes. The situation is different in namespaces. If the code that defines the namespace cannot find the constants and functions in the corresponding namespace, it will use global constants and functions; and if it cannot find the class in the corresponding namespace (including its own Define class), the code will report an error directly.

•If you use the namespace through the use keyword, you do not need to import it through the fully qualified name (\ symbol), because PHP already assumes that the imported namespace is a fully qualified namespace.

•Constants, functions, classes, interfaces, and other namespaces can be imported through the use keyword.

•Namespace is a language feature. In order to pursue more effective use, there should be a usage specification and automatic loading mechanism. This is the PSR-4 specification.

The above is the detailed content of Examples of detailed explanation of PHP namespace usage. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

7 PHP Functions I Regret I Didn't Know Before 7 PHP Functions I Regret I Didn't Know Before Nov 13, 2024 am 09:42 AM

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

See all articles