在PHP命名空間中使用Exception報錯not found的問題,結合具體執行個體詳細為你講解

來源:互聯網
上載者:User
當一個php檔案聲明了命名空間,則此檔案中使用類時,必須指定是在哪個命名空間中,否則就會報錯,原因是在當前空間中找不到這個類,PHP核心類也會有這個問題,樣本:

namespace TestExc;try {    throw new Exception('throw exception');} catch(Exception $ex) {    echo $ex->getMessage();}1234567

運行以上代碼,報錯:

PHP Fatal error:  Class 'TestExc\Exception' not found in /private/var/folders/sr/1sh63qr542x9h61w4t7wrk200000gn/T/CodeRunner/Untitled.php on line 61

從報錯中也可以看到,雖然Exception是PHP核心類,但程式只會在當前空間中尋找Exception類,有兩種解決方案
1. 聲明使用全域空間的Exception

use \Exception;

使用Exception時聲明為使用全域空間的

namespace TestExc;try {    throw new \Exception('throw exception');} catch(\Exception $ex) {    echo $ex->getMessage();}123456

相關知識:

如果沒有定義任何命名空間,所有的類與函數的定義都是在全域空間,與 PHP引入命名空間概念前一樣。在名稱前加上首碼 \ 表示該名稱是全域空間中的名稱,即使該名稱位於其它的命名空間中時也是如此。

對於函數和常量來說,如果當前命名空間中不存在該函數或常量,PHP 會退而使用全域空間中的函數或常量。

上面是我整理給大家的關於PHP命名空間報錯的問題,希望今後會對大家有協助。

相關文章:

關於PHP的命名空間(結合代碼執行個體,簡單粗暴易懂)

php命名空間(結合代碼詳細解答)

結合代碼詳細介紹php中的範圍

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.