1. 程式人生 > 其它 >PHP例項化一些類的時候為啥要加上\

PHP例項化一些類的時候為啥要加上\

觀察程式碼

//銀聯支付類呼叫初始化
  use Vendor\UnionPay\UnionPayUserV1; // 匯入外部框架的類

    public function UoionPayInit() {
        $client = new \UnionPayV1();  // 這裡\的作用是什麼?
        $this->client=$client;
    }

函式測試

加 \ 可以呼叫指定名稱空間下的函式, 如果只是單獨的一個 \ 就是呼叫根名稱空間下的函式。

namespace Test;
  function func(){
	echo 'namespace - Test';
  }
  namespace TXT;
  function func(){
	  echo 'namespace - TXT';
  }
  
  // \func(); //輸出  Fatal error: Call to undefined function func() in D:\phpStudy\WWW\ppp.php on line 94
  // TXT\func(); //輸出 Fatal error: Call to undefined function TXT\TXT\func() in D:\phpStudy\WWW\ppp.php
  // \TXT\func(); //輸出 namespace - TXT
  \Test\func(); //輸出 namespace - Test

測試類

利用PHP內建類進行測試 PHP Manualen

  <?php
namespace Home\Controller;

use Think\Controller;

class IndexController extends Controller
{
    public function index()
    {
        $this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微軟雅黑"; color: #333;font-size:24px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px } a,a:hover{color:blue;}</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>歡迎使用 <b>ThinkPHP</b>!</p><br/>版本 V{$Think.version}</div><script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"></script><thinkad id="ad_55e75dfae343f5a1"></thinkad><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>','utf-8');
    }
	
	/*public function Test(){
		$stream = new HttpInflateStream;
		echo $stream->update('String');
		echo $stream->finish(); //輸出 Class 'Home\Controller\HttpInflateStream' not found
	}*/

  public function Test(){
		$stream = new \HttpInflateStream;
		echo $stream->update('String');
		echo $stream->finish();  //輸出 Class 'HttpInflateStream' not found
	}
}

結論

和名稱空間有關,因為所需要的銀聯裡面沒有用到名稱空間,框架中啟用了,會在當前名稱空間中尋找這個類,找不到會報錯。