namespaces - 關於在ThinkPHP中使用namespace的問題

來源:互聯網
上載者:User
在使用ThinkPHP開發過程中,因為需要使用一個外部庫,便直接在Model檔案夾下直接建立了一個libs檔案夾,將庫檔案放在裡面,然後在Model中require_once裡面的檔案。

但是ThinkPHP架構Model中使用了namespace,而這個庫裡面同樣使用了namespace,現在程式似乎只在Model引入的namespace中去搜尋庫裡面的use,所以一直報錯:

Class 'Falcon\Model\Thrift\Transport\TSocket' not found錯誤位置FILE: D:\wamp\www\Application\Home\Model\HelloModel.class.php  LINE: 165

目錄組織:

- Application    - Home        - Model            -libs                -這裡是引入的庫檔案            -HelloModel.class.php

這是HelloModel.class.php檔案

不知道要如何解決這個問題,求助!!!先謝謝各位了!!!

回複內容:

在使用ThinkPHP開發過程中,因為需要使用一個外部庫,便直接在Model檔案夾下直接建立了一個libs檔案夾,將庫檔案放在裡面,然後在Model中require_once裡面的檔案。

但是ThinkPHP架構Model中使用了namespace,而這個庫裡面同樣使用了namespace,現在程式似乎只在Model引入的namespace中去搜尋庫裡面的use,所以一直報錯:

Class 'Falcon\Model\Thrift\Transport\TSocket' not found錯誤位置FILE: D:\wamp\www\Application\Home\Model\HelloModel.class.php  LINE: 165

目錄組織:

- Application    - Home        - Model            -libs                -這裡是引入的庫檔案            -HelloModel.class.php

這是HelloModel.class.php檔案

不知道要如何解決這個問題,求助!!!先謝謝各位了!!!

既然你使用了單入口的架構,就不能這樣寫 require_once('libs/thrift_require.php');
1.你可以嘗試改成這樣 require_once('./Application/Home/Model/libs/thrift_require.php');
require_once 一定要寫成絕對路徑.
2.你的libs檔案目錄 建立錯了,因為你建在了Model檔案夾下面,這樣就破壞了架構本身的目錄結構,Thinkphp在自動匯入model裡的class的時候是根據命名空間名稱匯入的,錯誤修改: 在model平級目錄建立libs檔案夾,將第三方庫的每個class檔案加上自己的命名空間.自訂的類,如果沒有命名空間是無法自動載入的.
不要在架構的目錄下面建自己的目錄,不用破壞架構的目錄結構!!!
ps:我經常看你的個人部落格,發現有幾篇寫的非常好的文章

已經解決,只需要修改執行個體化代碼為:

$socket = new \Thrift\Transport\TSocket($host, $port);

如果在前面加上\會從根尋找,如果不加,應該是在上面的namespace裡面找。

  • 相關文章

    聯繫我們

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