PHP"/> PHP">

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

WBOY
풀어 주다: 2016-07-29 08:54:29
원래의
1570명이 탐색했습니다.

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教程有兴趣的朋友有所帮助。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!