Namespaces in PHP 5.3: Have you used them? _PHP Tutorial
【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>
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>
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.phpdoes 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>
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>
<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>
http://www.bkjia.com/PHPjc/446608.html
www.bkjia.com
- true
- 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...

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



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

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

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

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,

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

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

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 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.
