namespace-php如何通過命名空間使用其他檔案中的變數

來源:互聯網
上載者:User
關鍵字 php namespace
phpnamespace

比如有個 a.php 這樣定義
namespace np1; $foo = 'foo'; const foofoo = 'foofoo';
另外有個 b.php 這樣定義
namespace np2; $bar = 'bar'; const barbar = 'barbar';
在c.php定義
require "a.php" ; require "b.php";
$baz = np1\$foo; $qux = np2\$bar;
echo "$baz and $qux !"

三個檔案在同一目錄中,已經被正確require了,運行會出錯!
而c.php 中輸出a.php 和b.php 中的常量,比如c.php如下:
$baz = np1\foofoo; $qux = np2\barbar;
echo "$baz and $qux !"

則能正確輸出。
所以問題來了,怎樣才能在c.php通過命名空間標識使用a.php 和 b.php中的變數$foo和$bar .
好吧,是我問題沒有提清楚。試了下,直接 echo "$foo"; 是可以輸出的!但是既然
$foo是命名空間np1中定義的變數,為什麼在c.php中使用時不能加上命名空間的名字呢,比如這樣 echo np1\$foo;

但是相反,如果a.php 中定義了一個類和一個常量,比如a.php 這樣定義:

 your name: $name, and your login                       time: $time 
";} public function saysth(){ echo "echoing from function saysth of np1\C1
";}

}

在c.php檔案中可以通過命名空間np1使用檔案a.php中的常量 foofoo和類C1但是無法通過命名空間使用變數$foo .
比如c.php 這樣

require "a.php" ;
require "b.php";
$baz = new np1\C1("leon",time());
$qux = np1\foofoo;

$baz.saysth();
echo "$qux
";

上述c.php能夠正常使用np1中的類C1和常量foofoo, 但是為什麼不能通過np1\$foo 使用np1中的變數$foo 呢,搞不懂!不信大家可以試試.

設想一下如果b.php檔案和a.php檔案中同有名為$foo的變數 ,這樣在c.php 直接使用$foo而不加命名空間限定,程式怎麼判斷這個變數是哪個檔案定義的呢(我試了一下誰require在後輸出誰的變數)?

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.