PHP"/> PHP">

Heim  >  Artikel  >  Backend-Entwicklung  >  Modern-php 书摘(一)namespace 华为espace电脑版下载 espace.net patents renault espac

Modern-php 书摘(一)namespace 华为espace电脑版下载 espace.net patents renault espac

WBOY
WBOYOriginal
2016-07-29 08:54:291594Durchsuche

data-id="1190000004892254">

命名空间

命名空间的声明

  • 命名空间在PHP文件的顶部,

  • 命名空间声明语句以namespace开头,随后是一个空格,然后是命名空间的名称,最后以;结尾;

  • 厂商命名空间即下面声明的“Oreilly”是最重要的命名空间;必须具有全局唯一性。

<code><?php namespace Oreilly;</code></code>

子命名空间

<code><?php namespace Oreilly\ModernPHP;</code></code>

Ps: 同一个命名空间下的所有类、接口、函数没必要在同一个PHP文件中声明;
所以,我们可以在不同的文件中编写属于同一个命名空间的多个类。

import and alias

PHP引入namespace之前,开发者们使用Zend式的类名来解决命名冲突问题;

<code># Zend_Cloud_DocumentService_Adapter_WindowsAzure_Query => Zend/Cloud/DocumentService/Adapter/WindowsAzure/Query.php</code>

但是你也看到了,太TM长了,不能忍啊!!!
namespace提供了 import和 alias来解决这个问题。
import,alias 在5.3版本下支持类,接口与命名空间导入。5.6开始支持函数与常量导入。

<code># namespace without alias
<?php $response = new \Symfony\Component\HttpFoundation\Response('Oops',400);
$response->send();
$response2 = new \Symfony\Component\HttpFoundation\Response('Success',200);</code>
<code># namespace with Default alias 
use Symfony\Component\HttpFoundation\Response;
$response = new Response('Oops',400);
$response->send();</code>
<code># namespace with custom alias 
use Symfony\Component\HttpFoundation\Response as Res;
$response = new Res('Oops',400);
$response->send();</code>

注意:

  • 同namespace声明一样,在PHP文件顶部使用use关键字,而且在

  • 开头无需加\符号,因为PHP导入是完全限定;

  • use必须出现在全局作用域中,因为use在编译时使用。

PHP5.6以后可以导入函数和常量;

<code><?php use func Namespace\functionName;

functionName();</code></code>

导入常量:

<code><?php use constant Namespace\CONST_NAME;

echo CONST_NAME;
</code></code>

实用技巧

多重导入

如果想在一个PHP文件中导入多个类、接口、函数或者常量,需要使用多个use语句;

不建议:

<code><?php use Symfony\Component\HttpFoundation\Request,
    Symfony\Component\HttpFoundation\Response,
    Symfony\Component\HttpFoundation\Cookie;</code></code>

建议:

<code><?php use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Cookie;</code></code>

PHP允许一个文件定义多个命名空间【强烈不建议】

<code><?php namespace Foo {
    //...
}

namespace Bar {
    //...
}</code></code>

全局命名空间

<code><?php namespace My\App;

class Foo
{
    public function doSomething()
    {
        $ex = new \Exception();
    }
}</code></code>

NOTE: 此时,在 Exception类的名称前加\前缀是告诉PHP在全局中查找Exception,默认会在当前命名空间中查找;

以上就介绍了Modern-php 书摘(一)namespace,包括了espace,modern方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn