命名空間

命名空間php

◆徹底限定名稱(Fully-qualified name)函數

任何PHP代碼均可以引用徹底限定名稱,它是一個以命名空間反斜線開頭的標識符,如\App\Lib1\MYCONST,\App\Lib2\MyFunction( )等。ui

徹底限定名稱是沒有任何歧義的,開頭的反斜線和文件路徑的做用有點相似,它表示「根」全局空間,若是咱們在全局空間中實現了一個不一樣的MyFunction( ),能夠使用\MyFunction( )從lib1.php或lib2.php調用它。spa

徹底限定名稱對一次性函數調用或對象初始化很是有用,但當你產生了大量的調用時它們就沒有實用價值了,在下面的討論中咱們將會看到,PHP提供了其它選項以解除咱們爲命名空間打字的煩惱。code

◆限定名稱(Qualified name)對象

至少有一個命名空間分隔符的標識符,如Lib1\MyFunction( )。blog

◆非限定名稱(Unqualified name)字符串

沒有命名空間分隔符的標識符,如MyFunction( )。io

 

__NAMESPACE__是一個PHP字符串,它老是返回當前命名空間的名稱,在全局空間中它是一個空字符串function

namespace關鍵字能夠用於明確引用一個當前命名空間或子命名空間中的項目,它等價於類中的self命名空間

小例子命名空間

入口文件 name.php

<?php
    function __autoload($name) {
        $name = str_replace("\\", '/', $name.".class.php");
        require_once(dirname(__FILE__).'/'.$name);
    }

    use test\user as mc;
    $m = new mc();
    var_dump($m);

    $m-> user2();

 

./test/user.class.php文件

<?php
    namespace test;
    class user {
        function user() {
            echo 'new';
        }
        function user2() {
            echo '@@@@';
        }
    }

 

結果

]

構造函數要用__construct() ,才能夠調用到數據

相關文章
相關標籤/搜索