Home  >  Article  >  Backend Development  >  About PHP namespace (combined with code examples, simple and easy to understand)

About PHP namespace (combined with code examples, simple and easy to understand)

亚连
亚连Original
2018-05-17 17:21:191601browse

The following is the namespace of PHP that I have compiled for you. Interested students can take a look.

The first file
cat.class.php

<?php
namespace Animals\Cat;        
class Cat    
{        
    public function speak()        
    {            
        echo &#39;miaow&#39;;        
    }    
}    
    function root()
    {        
        return &#39;cat.class.php&#39;;
    }
?>123456789101112131415

The second file
dog.class.php

<?php
namespace Animals\Dog;    
    class Dog
    {
        public function speak()
        {
            echo &#39;woof&#39;;
        }
    }    class Cat
    {
        public function speak()
        {
            echo &#39;miaoth&#39;;
        }
    }    function root(){
        return &#39;dog.class.php&#39;;
    }
?>1234567891011121314151617181920212223

index.php
The third file is the file that loads the above namespace

<?php
    namespace Index;    
    require_once &#39;cat.class.php&#39;;    
    require_once &#39;dog.class.php&#39;;    
    use Animals\Cat;    
    use Animals\Dog as Snoopi;
        
    //完全限定名
    $cat1 = new \Animals\Cat\Cat();  
    $cat1->speak();    
    echo &#39;<br/>&#39;;    
    $cat2 = new \Animals\Dog\Cat();    
    $cat2->speak();    
    echo &#39;<br/>&#39;;    
    $dog1 = new \Animals\Dog\Dog();    
    $dog1->speak();    
    echo &#39;<br/>&#39;; 
       
    //非完全限定名
    $cat3 = new Cat\Cat();    
    $cat3->speak();    
    echo &#39;<br/>&#39;; 
       
    //别名 *别名和非完全限定名 不能同时使用
    $dog3 = new Snoopi\Dog();    
    $dog3->speak();    
    //不止函数,该命名空间下的任何可用资源都可调用[函数、变量、常量等等]
    echo Snoopi\root();    
    echo &#39;<br/>&#39;;
?>12345678910111213141516171819202122232425262728293031323334

The namespace class can be analogized to the file directory system
new A class in a namespace [or function, variable, etc. etc.] That is to call the content in a file in a certain directory
The fully qualified name is the path to find the content in the file
The non-fully qualified name is equivalent to
use the 'relative path' when introducing the namespace ' Assign a value to a variable, which defaults to the last subspace.
Use the as keyword to set the name of the variable. The variable is an alias, so aliases and non-fully qualified names cannot be used at the same time (because a use[ as] Only one alias can be given).
Analog file directory system:
File location: /root/path/file/fileContent;
use /root/path/file, that is, file='/root/path/file′, so the path of file is file='/root/path/file' so the path of file is file/fileContent
*And the namespace Index in index.php is equivalent to indicating the current file location
So if the namespace Index in index.php Modifying the file content to

<?php
    require_once &#39;cat.class.php&#39;;    
    require_once &#39;dog.class.php&#39;;    
    use Animals\Cat\Cat;#引入该命名空间下的类
    $cat4 = new Cat();    
    $cat4->speak();
    root(); 
?>123456789

use is equivalent to loading only the Cat class in the namespace Animals\Cat, and the root() function is not 'loaded'
So the operation will throw an error: root( )Function not declared

The above is the PHP namespace I compiled for everyone. I hope it will be helpful to everyone in the future.

Related articles:

PHP namespace (detailed answer combined with code)

Detailed introduction to PHP namespace and automatic loading The difference

#Combined with the code to introduce the scope in php in detail

The above is the detailed content of About PHP namespace (combined with code examples, simple and easy to understand). For more information, please follow other related articles on the PHP Chinese website!

Statement:
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