簡體   English   中英

PHP命名空間:為什么找不到我的班級?

[英]PHP Namespaces: why isn't my class found?

我已經閱讀了一些有關PHP中的名稱空間以及compser如何處理名稱空間自動加載的知識。 我無法弄清楚為什么找不到我的班級。 有人可以幫忙嗎?

我正在使用Laravel,以下是相關的位:

composer.json相關內容:

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php",
        "app/libraries"
    ],
    "psr-0": {
        "Facebook\\":"vendor/facebook/php-sdk-v4/src/"
    }
}

做一個composer dump-autoload給我在vendor/composer/autoload_namespaces.php的以下行:

'Facebook\\\\' => array($vendorDir . '/facebook/php-sdk-v4/src'),

我的供應商文件夾結構為:Facebook是:

vendor
   |__ facebook
         |__ php-sdk-v4
                  |__ src
                       |__ Facebook
                              |__ ..
                              |__ Facebook.php
                              |__ ..

嘗試$facebook = new Facebook($config)給了我

Symfony \\組件\\調試\\異常\\ FatalErrorException(E_UNKNOWN)未找到類'Facebook'

我究竟做錯了什么?!

供應商文件夾中的所有內容均應自動加載,因此沒有必要使用這些行

"psr-0": {
    "Facebook\\":"vendor/facebook/php-sdk-v4/src/"
}

您是否已將這些行添加到composer.json並以通常的composer方式安裝了庫?

"require": {
    "facebook/php-sdk-v4": "~5.0"
}

Facebook是該類的名稱,但Facebook似乎也是您的名稱空間的名稱。

在這種情況下,您可以像這樣實例化它:

$facebook = new \Facebook\Facebook($config);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM