Home Backend Development PHP Tutorial Namespaces in PHP 5.3: Have you used them? _PHP Tutorial

Namespaces in PHP 5.3: Have you used them? _PHP Tutorial

Jul 15, 2016 pm 01:26 PM
php name yes space Featured

【php100 Selected Translation】Namespace is the most important change in PHP 5.3. C# and Java developers are very familiar with this term, and they can finally better change the structure of PHP applications.

Why do we need namespaces?

As your PHP code base grows, the risk of modifying previously defined function and class names becomes higher. The problem is even more serious when you try to add third-party components or plug-ins. What if there are two or more code sets that implement a "Database" and "User" class?

Until now, the only solution has been to use long class/function names. For example, WordPress uses the prefix "WP_" before each class and function name, and Zend Framework uses a very descriptive naming convention. , resulting in very verbose class names, such as:

Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive

Name conflict problems can be solved using namespaces. PHP constants, classes and functions can be combined into namespace libraries.

How to define a namespace?

By default, all constant, class and function names are placed in the global space, just like before PHP supported namespaces.

You can define a namespace by using the keyword namespace at the top of the PHP file. It must be the first command (except declare), and no non-PHP code, HTML, or spaces can appear in front of it. For example:

<ol class="dp-c"><li class="alt"><span><span>< ?php  </SPAN></SPAN><LI class=""><SPAN></SPAN><SPAN class=comment><FONT color=#008200>// define this code in the 'MyProject' namespace </FONT></SPAN><SPAN> </SPAN></SPAN><LI class=alt><SPAN>namespace MyProject;  </SPAN><LI class=""><SPAN> </SPAN><LI class=alt><SPAN></SPAN><SPAN class=comment><FONT color=#008200>// ... code ... </FONT></SPAN><SPAN> </SPAN></SPAN></LI></OL>
Copy after login

The code below this line is assigned to the MyProject namespace. It is impossible to nest namespaces or define multiple namespaces for the same code block. If you really do this, Only the last namespace is recognized, but you can define different namespace codes in the same file, such as:

<OL class=dp-c><LI class=alt><SPAN><SPAN>< ?php  </SPAN></SPAN><LI class=""><SPAN>namespace MyProject1;  </SPAN><LI class=alt><SPAN></SPAN><SPAN class=comment><FONT color=#008200>// PHP code for the MyProject1 namespace </FONT></SPAN><SPAN> </SPAN></SPAN><LI class=""><SPAN> </SPAN><LI class=alt><SPAN>namespace MyProject2;  </SPAN><LI class=""><SPAN></SPAN><SPAN class=comment><FONT color=#008200>// PHP code for the MyProject2 namespace </FONT></SPAN><SPAN> </SPAN></SPAN><LI class=alt><SPAN> </SPAN><LI class=""><SPAN></SPAN><SPAN class=comment><FONT color=#008200>// Alternative syntax </FONT></SPAN><SPAN> </SPAN></SPAN><LI class=alt><SPAN>namespace MyProject3 {  </SPAN><LI class=""><SPAN> </SPAN><SPAN class=comment><FONT color=#008200>// PHP code for the MyProject3 namespace </FONT></SPAN><SPAN> </SPAN></SPAN><LI class=alt><SPAN>}  </SPAN><LI class=""><SPAN>?>  </span></span></li></ol>
Copy after login

Although it is possible to do this, I recommend you not to do it. It is better to define only one namespace in each file so as not to confuse you.

Subnamespaces

PHP allows you to define hierarchical namespaces so that libraries can be subdivided. Subnamespaces are separated by a backslash character (), such as: ◆ In the file, we use the AppLib1 namespace to define a constant, a function and a class, such as:

lib1.php

Now we can include this section in another PHP file Code, such as:

myapp.php

does not define a namespace in myapp.php, so this code exists in the global space, and any reference to MYCONST, MyFunction and MyClass Direct references will fail because they exist in the AppLib1 namespace. In order to call the code in lib1.php, we can add a prefix before the AppLib1 namespace to define a fully qualified name. The following is the output when I load myapp.php Result:

Fully qualified names can get very long, and there are some obvious benefits to defining long names, like App-Lib1-MyClass.

Original text:
<ol class="dp-xml"><li class="alt"><span><span class="tag"><strong><font color="#006699"><</FONT></STRONG></SPAN><SPAN> ?php  </SPAN></SPAN><LI class=""><SPAN>// application library 1  </SPAN><LI class=alt><SPAN>namespace AppLib1;  </SPAN><LI class=""><SPAN> </SPAN><LI class=alt><SPAN>const </SPAN><SPAN class=attribute><FONT color=#ff0000>MYCONST</FONT></SPAN><SPAN> = </SPAN><SPAN class=attribute-value><FONT color=#0000ff>'AppLib1MYCONST'</FONT></SPAN><SPAN>;  </SPAN></SPAN><LI class=""><SPAN> </SPAN><LI class=alt><SPAN>function MyFunction() {  </SPAN><LI class=""><SPAN> return __FUNCTION__;  </SPAN><LI class=alt><SPAN>}  </SPAN><LI class=""><SPAN> </SPAN><LI class=alt><SPAN>class MyClass {  </SPAN><LI class=""><SPAN> static function WhoAmI() {  </SPAN><LI class=alt><SPAN>  return __METHOD__;  </SPAN><LI class=""><SPAN> }  </SPAN><LI class=alt><SPAN>}  </SPAN><LI class=""><SPAN></SPAN><SPAN class=tag><STRONG><FONT color=#006699>?></font></strong></span><span> </span></span></li></ol>
Copy after login
How to Use PHP Namespaces, Part 1: The Basics

Author:

Craig Buckler
<ol class="dp-xml"><li class="alt"><span><span class="tag"><strong><font color="#006699"><</FONT></STRONG></SPAN><SPAN> ?php  </SPAN></SPAN><LI class=""><SPAN>header('Content-type: text/plain');  </SPAN><LI class=alt><SPAN>require_once('lib1.php');  </SPAN><LI class=""><SPAN> </SPAN><LI class=alt><SPAN>echo AppLib1MYCONST . "n";  </SPAN><LI class=""><SPAN>echo AppLib1MyFunction() . "n";  </SPAN><LI class=alt><SPAN>echo AppLib1MyClass::WhoAmI() . "n";  </SPAN><LI class=""><SPAN></SPAN><SPAN class=tag><STRONG><FONT color=#006699>?></font></strong></span><span> </span></span></li></ol>
Copy after login

<ol class="dp-xml">
<li class="alt"><span><span>AppLib1MYCONST    </span></span></li>
<li class=""><span>AppLib1MyFunction    </span></li>
<li class="alt"><span>AppLib1MyClass::WhoAmI </span></li>
</ol>
Copy after login

http://www.bkjia.com/PHPjc/446608.html

www.bkjia.com

    true
  1. http: //www.bkjia.com/PHPjc/446608.html

TechArticle

[php100 selected translation] Namespace is the most important change in PHP 5.3, for C# and Java developers The term is very familiar and they can finally change the structure of PHP applications for the better...

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

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

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

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