PHP例項化一些類的時候為啥要加上\
阿新 • • 發佈:2022-05-07
觀察程式碼
//銀聯支付類呼叫初始化
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 } }
結論
和名稱空間有關,因為所需要的銀聯裡面沒有用到名稱空間,框架中啟用了,會在當前名稱空間中尋找這個類,找不到會報錯。