PHP PHP

首頁  >  文章  >  後端開發  >  Modern-php 書摘(一)namespace 華為espace電腦版下載 espace.net patents renault espac

Modern-php 書摘(一)namespace 華為espace電腦版下載 espace.net patents renault espac

WBOY
WBOY原創
2016-07-29 08:54:291592瀏覽

data-id="1190000004892254">

命名空間

命名空間的聲明

  • 命名空間在PHP檔案的頂部,

  • 命名空間在PHP檔案的頂部,

    廠商命名空間即下面聲明的“Oreilly”是最重要的命名空間;必須具有全局唯一性。
  • <code><?php
    namespace Oreilly;</code>
  • 子命名空間
<code><?php
namespace Oreilly\ModernPHP;</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><?php
    use constant Namespace\CONST_NAME;
    
    echo CONST_NAME;
    </code>

    實用技巧

    多重導入常量:

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

    實用技巧

    多重導入常量使用多個use語句;

    不建議:

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

    建議:

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

    PHP允許一個檔案定義多個命名空間【強烈不建議】

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

    全域命名空間

    rrreee

    NOTE: 此時,在Exception 此時,在此時類別的名稱前加前綴是告訴PHP在全域中尋找Exception,預設會在目前命名空間中尋找;

    以上就介紹了Modern-php 書摘(一)namespace,包含了espace,modern的內容,希望對PHP教學有興趣的朋友有幫助。

    陳述:
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn